Форма Laravel не передает данные контроллеру

Я переделываю страницы регистрации по умолчанию в установке 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 @ создать у меня есть:

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) не передаются аргументы:

Форма Laravel не передает данные контроллеру

Как я могу правильно получить данные в форме, переданной в эту функцию?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
2 245
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте объект 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']),
    ]);
}

Примечание: Всегда хорошо проверять ваши данные перед их созданием, и вам также необходимо указать protected $fillable = []; в вашем классе модели User для массовое присвоение

Еще раз спасибо rkj. Пришлось также добавить объект.

Vranvs 30.07.2018 17:53

Не могли бы вы объяснить, почему нестандартный метод create использует массив вместо объекта Request? Очевидно, что это тоже работает, но когда я редактировал форму, мне пришлось теперь изменить ее на объект запроса.

Vranvs 30.07.2018 17:53

@Vranvs обновил ответ со ссылкой, попробуйте и дайте мне знать, если у вас есть какие-либо вопросы

rkj 30.07.2018 18:00

В 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),
    ]);
}

Другие вопросы по теме