首页 > 解决方案 > 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)函数:

在此处输入图像描述

如何正确获取传递给此函数的表单中的数据?

标签: phplaravelauthenticationroutes

解决方案


使用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模型类中指定批量分配


推荐阅读