Как настроить сообщения об ошибках проверки при использовании автоматических перенаправлений? - PullRequest
2 голосов
/ 04 октября 2019

Используя Laravel 5.8 и сгенерированные имена полей, я хотел бы знать, возможно ли изменить сообщения проверки, используемые программно.

В настоящее время я использую метод автоматического перенаправления проверки в моем контроллере. :

function processRequest(Request $request)
{
    $generated = session()->get('expected_field');
    $request->validate([
        'preset' => 'required',
        $generated => 'required'
    ]);
}

Это работает, как и ожидалось, но сообщение об ошибке по умолчанию приводит к

«Поле {$generated} обязательно», и это бесполезно.

Я быхотел бы сделать это без рефакторинга в пользовательский класс запроса.

1 Ответ

4 голосов
/ 04 октября 2019

Извлечение «Пользовательских атрибутов проверки» в resoures/lang/{lang}/validation.php:

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/

'attributes' => [],

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

Например, если session()->get('expected_field');был "first_name", но вы хотели, чтобы он сказал "First Name", вы бы задали:

'attributes' => [
  'first_name' => 'First Name',
  ...
]

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

Поле "Имя" обязательно для заполнения.

Вы также можете обновить сообщение по умолчанию для каждого правила в разделе "Языковые строки проверки"раздел, если вам не нравится его структура / формулировка.

-Edit-

validate() принимает второй параметр, который является массивом сообщений проверки. Это можно настроить для работы со строкой, возвращаемой session()->get('expected_field');, или полностью опустить ее в пользу более общего сообщения об ошибке:

$this->validate([
  $generated => 'required'
], [
  // $generated.'.required' => 'The '.ucwords(str_replace('_', ' ', $generated)).' field is required.'
  $generated.'.required' => 'The Anti-Spam field is required.'
]);

При такой логике правило проверки будет срабатывать для любого $generatedесть, но сообщение будет более общим, или манипуляция $generated

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...