【问题标题】:Laravel Form not Passing Data to ControllerLaravel 表单未将数据传递给控制器
【发布时间】:2019-01-06 22:00:25
【问题描述】:

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

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

【问题讨论】:

    标签: php laravel authentication routes


    【解决方案1】:

    使用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']),
        ]);
    }
    

    注意:在创建数据之前验证您的数据总是好的,您还需要在 User 模型类中为 mass assignment 指定 protected $fillable = [];

    【讨论】:

    • 再次感谢 rkj。还必须添加对象。
    • 您介意解释一下为什么开箱即用的 create 方法使用数组而不是 Request 对象吗?因为显然这也有效,但是当我编辑表单时,我现在必须将其更改为请求对象
    • @Vranvs 用链接更新了答案,试试看,如果您有任何疑问,请告诉我
    【解决方案2】:

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

    public function create(Request $request){   
    
        return User::create([
            'firstname' => $request->first_name,
            'lastname' => $request->last_name,
            'province' => $request->province,
            'postal_code' => $request->postal_code,
            'email' => $request->email,
            'password' => Hash::make($request->password),
        ]);
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 2016-11-26
      • 1970-01-01
      • 2021-06-23
      相关资源
      最近更新 更多