2013-11-15 3 views
1

Предположим, у меня есть два типа объектов (A и B), имеющих тот же атрибут ends_at.Возможно ли присвоить другое сообщение об ошибке одному и тому же атрибуту проверки в другом контексте?

В моих файлах Ланг, я хочу иметь два сообщения для ends_at, в зависимости, относится ли он к А или В.

Я пробовал:

'custom_rule' => 'Default message', 

'custom' => array(
    'A.ends_at' => [ 'custom_rule' => 'Message for A' ], 
    'B.ends_at' => [ 'custom_rule' => 'Message for B' ] 
), 

, но он не работает; вместо этого отображается сообщение по умолчанию.

Вы знаете, как отображать только соответствующее сообщение без изменения атрибута?

+0

Вам необходимо иметь пользовательское правило-A и пользовательское правило-B. Сделать custom-rule-B просто вернуть custom-rule-A как функцию, но пока вы можете указать уникальное сообщение для A и B в вашем lang-файле – Laurence

ответ

0

Лучший способ продвижения валидации - создать службу валидации, тогда вы можете определить сообщения по умолчанию для своих правил, а также уточнить сообщения для экземпляров этих правил. Вот основной пример проверки формы Логин:

class Login extends Validator { 

    public static $rules = [ 

     'email' => 'required|email', 
     'password' => 'required|numeric', 

    ]; 

    public static $messages = [ 

     'email.required' => 'Please enter an email address.', 
     'email.email'  => 'Please enter a valid email address.', 
     'password.required' => 'Please enter a password.', 

    ]; 
} 

Заканчивать большой видео-учебник от Jeffrey Way здесь: https://tutsplus.com/lesson/validation-services/

Он принимает вас через создание службы в о 10mins (пропустить мимо основной информации проверки до 10 минут, чтобы сразу начать работу в службе проверки).

+0

Что делать, если у меня есть многоязычный сайт? Смогу ли я прочитать эти $ сообщения через языковой файл? –

+0

Самое замечательное в службе валидации - вы можете расширить ее с помощью как можно большего количества различных экземпляров языка. Таким образом, вам может понадобиться класс 'Login_EN' (английский) или' Login_ES' (испанский), вы можете выбрать, какой из них использовать в логике вашего контроллера. В учебнике, которое я добавил, вы узнаете, как использовать эту услугу. –

Смежные вопросы