php - Laravel 表单未将数据传递给控制器
问题描述
我正在重新制作 Laravel 安装中的默认注册页面,并具有以下形式:
<form method="POST" class="uk-form-horizontal uk-margin-large" action="{{ route('registerbasic') }}">
@csrf
<input class="uk-input" id="form-horizontal-text" type="text" placeholder="e.g. Jane" name="first_name">
...more inputs
</form>
我的web.php中的路由转到我的 Auth\RegisterController:
Route::post('/register/basic/create', 'Auth\RegisterController@create')->name('registerbasic');
在我的RegisterController@create中,我有:
protected function create(array $data)
{
return User::create([
'firstname' => $data['first_name'],
'lastname' => $data['last_name'],
'province' => $data['province'],
'postal_code' => $data['postal_code'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
但是,当我单击提交表单时,我收到一条错误消息,指出没有将任何参数传递给create(array $data)
函数:
如何正确获取传递给此函数的表单中的数据?
解决方案
使用Request
(Illuminate\Http\Request) 对象。Laravel 提供Request
类和一组方法来处理请求数据。有关详细信息,您可以查看此https://laravel.com/docs/5.6/requests
public function create(Request $request)
{
$data = $request->all();
return User::create([
'firstname' => $data['first_name'],
'lastname' => $data['last_name'],
'province' => $data['province'],
'postal_code' => $data['postal_code'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
注意:在创建数据之前验证数据总是好的,您还需要protected $fillable = [];
在User
模型类中指定批量分配