首页 > 解决方案 > 在laravel 7中将提交表单传递给控制器

问题描述

我有一个提交表单,我想发送到我的 RegisterController 并且我收到此错误“”函数 App\Http\Controllers\Auth\RegisterController::create() 的参数太少,通过了 0 并且预期正好 1“”方法需要一个数组。如何将我的请求转换为数组?

表格:

<form method="POST" action="{{ route('posting') }}">
                        @csrf....and so on

路线:

Route::get('administration/register', function () {
    return view('vregister');
})->name('registration');


Route::post('/insert','Auth\RegisterController@create')->name('posting');

RegisterController.php 的方法

  protected function create(array $data)
    {

        $user= User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);


        $role=Role::select('id')->where('name','Support')->first(); //??
        $user->roles()->attach($role);
        return $user;
    }

标签: phplaravelpostsubmit

解决方案


您在创建方法中使用了错误的实例。使用表单时,您应该使用Request类将表单数据实际发送到您的控制器。你拥有它的方式,没有数据被发送到create()方法,因此错误。create()将您的方法编辑为:

protected function create(Request $data)

并在顶部导入 Request 类:

use Illuminate\Http\Request;

阅读更多官方文档

编辑:

要在保存数据后重定向到特定页面,请将您的 return 语句更改为:

return redirect()->back();

这将使您返回上一页。您还可以在此处添加您希望重定向到的任何路线:

return redirect()->rote('route.name');

推荐阅读