Как я могу проверить, что 2 поля формы имеют одинаковое содержимое, используя массив правил валидатора laravelcollective/html?

Я новичок в Laravel, и у меня есть следующая проблема.

У меня есть этот метод, который обрабатывает отправку формы:

public function store(Request $request) {

    Log::info('store() START');

    $data = Input::all();

    Log::info('INSERTED DATA: '.implode("|", $data));

    $rules = array(
        'name' => 'required',
        'surname' => 'required',
        'login' => 'required',
        'email' => 'required|email',
        'emailConfirm' => 'required|email',
        'pass' => 'required',
        'passlConfirm' => 'required',
        'g-recaptcha-response' => 'required|captcha',

    );

    $validator = Validator::make($data, $rules);

    if ($validator->fails()){
        return Redirect::to('/registration')->withInput()->withErrors($validator);
    }
    else{
        // Do your stuff.
    }
}

Как видите, он содержит массив $rules, содержащий правила проверки.

Он работает очень хорошо, но я также хочу выполнить следующие 2 проверки:

  1. Поле email должно содержать тот же текст, что и поле emailConfirm.

  2. Поле pass должно содержать тот же текст, что и поле passConfirm.

Могу ли я реализовать такую ​​проверку в массиве $rules?


person Community    schedule 21.02.2017    source источник


Ответы (2)


На самом деле Laravel поставляется с правилом проверки, которое называется confirmed. Вам нужно будет изменить свои поля на email_confirmation и pass_confirmation и добавить правило confirmed в поля email и pass.

person Mariusz    schedule 21.02.2017

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

 $rules = array(
    'name' => 'required',
    'surname' => 'required',
    'login' => 'required',
    'email' => 'required|confirmed|email',
    'pass' => 'required|confirmed',
    'g-recaptcha-response' => 'required|captcha',

);

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

echo Form::email("email_confirmation",null, $attributes = []);
echo Form::password("pass_confirmation",null, $attributes = []);
person Chintan7027    schedule 21.02.2017