Передача формы отправки контролеру в laravel 7 - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть форма для отправки, которую я хочу отправить моему RegisterController, и я получаю эту ошибку "" Слишком мало аргументов для функции App \ Http \ Controllers \ Auth \ RegisterController :: create (), 0 передано и ожидается ровно 1 " "Метод create требует массив. Как преобразовать мой запрос в массив?

форма:

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

1 Ответ

1 голос
/ 30 апреля 2020

Вы используете неправильный экземпляр в вашем методе создания. При использовании форм вы должны использовать класс Request для фактической отправки данных формы вашему контроллеру. Как у вас есть, никакие данные не отправляются в метод create(), отсюда и ошибка. Отредактируйте свой create() метод следующим образом:

protected function create(Request $data)

И класс запросов на импорт вверху:

use Illuminate\Http\Request;

Подробнее в официальной документации .

РЕДАКТИРОВАТЬ:

Чтобы перенаправить на указанную c страницу после сохранения данных, измените свой оператор возврата на следующее:

return redirect()->back();

Это вернет вас к предыдущему стр. Вы также можете добавить любой маршрут, который вы sh будете перенаправлять на:

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