在laravel 7中传递提交表单到控制器上

问题描述 投票:0回答:1

我有一个提交表单,我想把它发送给我的RegisterController,但我得到了这个错误""App/Http/Controllers/Auth/RegisterController::create()函数参数太少,0个已通过,预期正好1个"" 创建方法需要一个数组,如何将我的请求转换成数组?

表单:

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

routes.methods of RegisterController.php:

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;
    }
php laravel post submit
1个回答
1
投票

你在创建方法中使用了错误的实例。当使用表单时,你应该使用 Request 类来实际发送表单数据到你的控制器。你的方法是,没有数据被发送至 create() 方法,因此出现错误。编辑你的 create() 方法到此。

protected function create(Request $data)

并在顶部导入Request类。

use Illuminate\Http\Request;

阅读更多信息,请访问官方 文件.

EDIT:

要在保存数据后重定向到一个特定的页面,将你的返回语句改为这样。

return redirect()->back();

这将使你返回到前一页。你也可以在这里添加任何你想重定向的路径。

return redirect()->rote('route.name');
© www.soinside.com 2019 - 2024. All rights reserved.