Как реализовать пользовательскую форму регистрации пользователя в Laravel 5.8 - PullRequest
1 голос
/ 10 июля 2019

Я хочу зарегистрировать новых пользователей в моем приложении laravel, используя предоставленную встроенную функциональность, но также добавить еще два поля: имя и фамилия. Я делаю свою регистрацию в административной области приложения, и поэтому у меня есть настроенная форма, которая отправляет данные в маршрут регистрации. Когда у меня пустая таблица пользователей, я могу добавить нового пользователя в базу данных. Когда я использую команду dd, я вижу данные, отправленные с клиента. Но когда я пытаюсь добавить второго пользователя в базу данных, ничего не происходит. Там нет ошибок отображается вообще. На этот раз я пытаюсь использовать команду dd, и приложение ничего не возвращает.

Чтобы подчеркнуть, я не хочу создавать еще один контроллер, чтобы справиться с этим, а скорее расширить уже зарегистрированный RegisterController.

Мне нужна помощь, чтобы определить, что я делаю неправильно.

// В пользовательской модели

 protected $fillable = [
        'firstname', 'lastname', 'email', 'password',
    ];

// получить данные от клиента в RegisterController.php

protected function validator(array $data)
    {
        return Validator::make($data, [
            'firstname' => ['required', 'string', 'max:255'],
            'lastname' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

// сохранить нового пользователя в RegisterController.php

 protected function create(array $data)
    {
        dd($data);
        return User::create([
            'firstname' => $data['firstname'],
            'lastname' => $data['lastname'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

// Моя форма

<form  method="POST" action="{{ route('register') }}">
    @csrf
    // code suppressed

 </form>

Ответы [ 3 ]

0 голосов
/ 10 июля 2019

Попробуйте создать новый user класс, подобный этому:

$user = new User;
$user->firstname = $data['firstname'];
// do same for other fields
$user->save();
0 голосов
/ 10 июля 2019

Я предполагаю, что вы разделили администратора и других пользователей на две разные группы.

СОВЕТ : Вы не можете использовать Auth::routes(); два раза, поэтому лучше, если вы напишите все эти маршруты по умолчанию вручную, чтобы получить более четкое изображение, что-то вроде этого

Route::group([
    'as'        => 'admin.',
    'prefix'    => 'admin',
    //'namespace' => 'Admin',
    //'middleware'  => 'SomeUserMiddleware'
],function(){
    Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
    Route::post('register', 'Auth\RegisterController@register');
});


Route::group([
    'as'        => 'user.',
    //'prefix'    => 'user'
    //'namespace' => 'User',
    //'middleware'  => 'SomeUserMiddleware'
],function(){
    Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
    Route::post('register', 'Auth\RegisterController@register');
});

Здесь вы можете найти список всех других маршрутов по умолчанию https://stackoverflow.com/a/52192841/5928015

Перейдите по следующему пути, чтобы проверить, какие все методы мы можем переопределить: -

...\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php

и для обновления пути перенаправления

...\vendor\laravel\framework\src\Illuminate\Foundation\Auth\RedirectsUsers.php

0 голосов
/ 10 июля 2019

Убедитесь, что ваши новые свойства заполняются в вашей пользовательской модели:

protected $fillable = ['firstname', 'lastname', 'email' ...];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...