在 laravel 7 中将提交表单传递给控制器

Passing submit form to controller in laravel 7

我有一个要发送到我的 RegisterController 的提交表单,但我收到了这个错误 “"Too few arguments to function App\Http\Controllers\Auth\RegisterController::create(), 0 passed and exactly 1 expected"” 创建方法需要一个 array.How 来将我的请求转换为数组?

表格:

<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;
    }

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

protected function create(Request $data)

并在顶部导入请求 class:

use Illuminate\Http\Request;

在官方阅读更多documentation .

编辑:

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

return redirect()->back();

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

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