Проверка форм с одинаковыми именами полей на одной странице

Метки ошибок для форм с одинаковыми полями в Ларавел

Допустим, у вас есть несколько форм на одной странице. Например, контактная форма и форма подписки на рассылку. У них обоих может быть поле email. Как узнать, какое поле из них не прошло валидацию и выдает ошибку?

Метки ошибок (ErrorBags) спешат на помощь

Если вы используете FormRequests, то всё очень просто. Вы можете установить собственный ErrorBag для конкретного FormRequest. Сейчас я всё покажу.

// ContactFormRequest.php

use Illuminate\Foundation\Http\FormRequest;

class ContactFormRequest extends FormRequest
{
    protected $errorBag = 'contactForm';
}
// NewsletterFormRequest.php

use Illuminate\Foundation\Http\FormRequest;

class NewsletterFormRequest extends FormRequest
{
    protected $errorBag = 'newsletterForm';
}

Ранее у вас в шаблонах было что-то типа этого:

{{ $errors->first('email') }}

Здесь использует дефолтный ErrorBag. Но, в нашем случае, мы его поменяли свой собственный. Соответственно, синтаксис тоже немного меняется. Вот так:

{{ $errors->contactForm->first('email') }}
{{ $errors->newsletterForm->first('email') }}

Я надеюсь, для кого-то это будет полезным.

Автор: Stefan Bauer
Перевод: Алексей Широков

Наш Телеграм-канал — следите за новостями о Laravel.