Laravel表单未将数据传递给控制器

时间:2018-07-30 15:37:54

标签: php laravel authentication routes

我正在重新制作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)函数:

enter image description here

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

2 个答案:

答案 0 :(得分:3)

使用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 = [];模型类中为mass assignment指定User < / p>

答案 1 :(得分:0)

在RegisterController中,使用Illuminate \ Http \ Request。 然后,您可以使用Request对象。

static Stream<Supplier<Sorter>> sorters() {
    return Stream.of(BubbleSorter::new, MergeSorter::new, InsertionSorter::new);
}
相关问题