2016-03-09 2 views
3

Рассмотрим следующий <input> массив в моей форме:Пользовательские сообщения об ошибках для ввода массива

<input type="text" name="title[1]" value=""> 
<input type="text" name="title[2]" value=""> 
<input type="text" name="title[3]" value=""> 

Числа (1,2,3 ) ссылаются на разных языках. 1 = английский, 2 = немецкий и т. Д.

Как добавить пользовательские сообщения об ошибках для входного массива?


Я попытался следующие без успеха в моей app/lang/en/validation.php:

<?php 
    return [ 
     'custom' => [ 
      'title.1' => [ 
       'required' => 'The english title is required.', 
      ], 
      'title.2' => [ 
       'required' => 'The german title is required.', 
      ], 
      'title.3' => [ 
       'required' => 'The italian title is required.', 
      ],                 
     ], 
    ]; 
?> 

Laravel бросает по умолчанию сообщения об ошибках, вместо того, чтобы использовать мои пользовательские сообщения:

title.1 требуется.
Поле заголовка 2 обязательно.
Поле заголовка 3 обязательно.

Благодарим за помощь, которую вы можете предоставить!


EDIT: Это работает, если я передать сообщение на мой валидатор, как это:

$messages = array(
    'title.1.required' => 'The english title is required', 
); 
$validator = Validator::make($data = Input::all(), $rules, $messages); 

Но я не могу заставить его работать в файле app/lang/en/validation.php.

+0

Странно, как никто не имеет ни малейшего представления ... Ну, думаю, я должен сделать это иначе. – Adrenaxus

ответ

0

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

return [ 
    'custom' => [ 
     'title' => [ 
      [ 1 => ['required' => 'The english title is required.']], 
      [ 2 => ['required' => 'The german title is required.' ]], 
      [ 3 => ['required' => 'The italian title is required.']], 
     ], 
    ], 
]; 
+0

Спасибо за ваш ответ! К сожалению, это тоже не работает. Он по-прежнему дает мне сообщения по умолчанию. Я * am * умею редактировать сообщение по умолчанию, хотя, я полагаю, это определенно правильный файл, но неправильный синтаксис. – Adrenaxus

+0

'. *' => [ 'required' => 'Ваше название обязательно' ] Для этого вам следует пометить каждый из них соответствующим образом: title_english. title_german ... поскольку это разные поля. –

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