создать пользовательскую форму регистрации в Laravel с - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь создать регистрационную форму в laravel, но с моими пользовательскими полями ввода я изменил 'register.bladed.php', чтобы изменить 'view'.

Форма регистрации по умолчанию содержала name, email, password, confirm Password.

Я добавил два новых поля ввода, т.е. gender и date-of-birth.

Я внес изменения в create_users_table.php с двумя новыми полями ввода, а затем перенес их в следующую структуру таблицы.

вот оно

Теперь, когда я пытаюсь register любого пользователя, он выдает следующую ошибку

SQLSTATE [HY000]: общая ошибка: 1364 Поле «пол» не имеет значения по умолчанию (SQL: вставить в users (name, email, password, updated_at, created_at) значения (abc, abc@gmail.com, $ 2y $ 10 $ wGLT0qsJ3EmSSa4vzTj0sOop6eRvtPShg9.aEZ6wJFJY8OdHMsrBO, 2019-06-07 15:55:08, 2019-06-07 15:55:08))

Я думаю, что хочу что-то изменить при отправке формы, но есть два functions, когда отправка формы, т.е. маршрут register

1 validator 2. create

Не знаю, что с этим делать?

Какие изменения нужно внести, чтобы новый ввод работал, новые поля ввода работали, и в будущем, что нужно сделать, чтобы настраиваемые поля ввода работали правильно.

Имя для date-of-birth - dob, заданное как:

                        <div class="col-md-6">
                            <input id="dob" type="date" class="form-control @error('email') is-invalid @enderror" name="dob" value="{{ old('dob') }}" required autocomplete="dob">

                            @error('dob')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>

для gender это:

                            <div class="col-md-6">
                            <select id="" class=" form-control" name = 'gender' required>
                                <option value="Male">Male</option>
                                <option value="Fe Male">Fe Male</option>
                            </select>

                            @error('gender')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>

Я использовал те же имена в RegisterController.php.

table выглядит так:

   public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email');
        $table->date('dd/mm/yy')
        $table->string('gender');
        $table->timestamps();
    });
}

Я сделал некоторые ручные изменения в table в моем phpmyadmin в соответствии с приведенной выше структурой таблицы, без php artisan migrate.

Может быть, это то, о чем я спрашиваю, но я новичок в laravel.

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 07 июня 2019

В вашей таблице поле «пол» не равно нулю, что означает, что при регистрации нового пользователя вы должны дать ему значение.Что не сделано, поэтому у вас есть ошибка.Вы все еще можете установить значение по умолчанию в своем классе миграции или указать Null: YES, например, для «email_verified_at», например, для «пола». Я надеюсь, что мои объяснения могут вам помочь.

0 голосов
/ 07 июня 2019

Если вы можете себе это позволить, удалите старую таблицу и создайте новую.Адаптирует класс для миграции.Таким образом, SQL будет знать, что размещать по умолчанию, если он не информирован.Попробуйте это.

/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('gender')->default('Your default value');
        $table->string('email')->unique();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });
}
0 голосов
/ 07 июня 2019

Вы должны добавить поля буксировки в 2 методах validator и create из RegisterController, как показано ниже:

ps: пожалуйста, проверьте название поля в вашей форме

class RegisterController extends Controller
{

  // some code ... 


 protected function validator(array $data)
    {
        return Validator::make($data, [
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',

            'gender' => 'required',
            'date_of_birth' => 'required'
        ]);
    }


     protected function create(array $data)
        {
            return User::create([
                'name' => $data['email'],
                'email' => $data['email'],
                'password' => bcrypt($data['password']),

                'gender' => $data['gender'],
                'date_of_birth' =>  $data['date_of_birth'],
            ]);
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...