2016-03-07 33 views
0

我试图找出为什么当我dd($request->all())我的控制器的存储方法一切都是正确的,但是当我把它发送到它的模型功能register()它没有在哪里被看到。请求数据到模型函数

我不太确定我做错了什么。

<?php 

namespace App\Http\Controllers; 

use App\User; 
use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

class UsersController extends Controller 
{ 
    public function store(Request $request, User $user) 
    { 
     $this->authorize('delete', $user); 

     $this->validate($request, [ 
      'firstName' => 'required|min:3', 
      'lastName' => 'required|min:3', 
      'displayName' => 'required|min:3', 
      'emailAddress' => 'required|email|unique:users,email', 
      'password' => 'required|min:3', 
      'role' => 'required|exists:roles,id' 
     ]); 

     $userRegistered = $user->register(
      new User($request->all()) 
     ); 

     if ($userRegistered) { 
      flash()->success('Success', 'The user has been successfully created!'); 
     } else { 
      flash()->error('Error', 'The user could not be successfully created!'); 
     } 

     return redirect()->to(route('users')); 
    } 
} 




<?php 

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 
use Illuminate\Database\Eloquent\SoftDeletes; 

class User extends Authenticatable 
{ 
    use SoftDeletes; 

    /** 
    * Fillable fields for a user. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'first_name', 
     'last_name', 
     'display_name', 
     'email', 
     'password', 
     'role_id' 
    ]; 

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 


    public function register(User $user) 
    { 
     return $user->create([ 
      'first_name' => $user->firstName, 
      'last_name' => $user->lastName, 
      'display_name' => $user->displayName, 
      'email' => $user->emailAdress, 
      'password' => $user->password, 
      'role_id' => $user->role 
     ]); 
    } 
} 

回答

0

您已经在请求数据和用户模型之间混合了变量的格式。

根据您的验证逻辑,请求数据即将到达为camelCase。但是,根据您的$fillable阵列,用户模型中的字段为snake_case。但是,即使如此,在您的register方法中,您也尝试使用camelCase访问用户模型中的字段。

您没有给出足够的信息给出明确的答案,但是您需要修正变量的格式。例如,将您的请求字段名称从camelCase更改为snake_case,并确保您使用snake_case访问模型上的字段。

0

您必须传递属性列表以“验证”方法。

//... 
$this->validate($request->all(), [ 
    'firstName' => 'required|min:3', 
    'lastName' => 'required|min:3', 
    'displayName' => 'required|min:3', 
    'emailAddress' => 'required|email|unique:users,email', 
    'password' => 'required|min:3', 
    'role' => 'required|exists:roles,id' 
]); 

一个更thing..check如果您使用"web"中间件。 (Kernel.php => MiddlewareGroups)。将该中间件添加到您的路线。

+0

我的验证以正确的方式正确运行。你和我的有什么不同? – user3732216