Я пытаюсь показать пользовательское сообщение проверки с входными данными массива, когда один из них не проходит проверку успешно, поскольку ошибка, которую Laravel показывает по умолчанию, выглядит примерно так:
неверный формат link.1.
И я хочу показать что-то вроде этого:
Недопустимый формат 'value'.
Я прочитал, что есть этот метод под названием messages()
, который я могу переопределить в файле запроса:
BannerRequest.php
<?php
namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
class BannerRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
"imagenes.*" => "nullable|mimes:jpeg,png,jpg|max:5120",
"links.*" => "nullable|string|max:191|url",
"idiomas.*" => "required|string|max:191",
];
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
$messages = array();
foreach($this->imagenes as $key => $valor) {
$messages[] = array('imagenes.'.$key.'.mimes:jpeg,png,jpg' => "La imagen ".$valor." no contiene un formato válido");
$messages[] = array('imagenes.'.$key.'.max:5120' => "La imagen ".$valor." no contiene un formato válido");
}
foreach($this->links as $key => $valor) {
$messages[] = array('links.'.$key.'.url' => "El link ".$valor." no es una URL válida");
}
return $messages;
}
}
Согласно документации:
Этот метод должен возвращать массив пар атрибут / правило и соответствующие им сообщения об ошибках.
Итак, поскольку я работаю с массивом входных данных, я подумал, что должен перебрать их, чтобы получить ихключ, чтобы получить что-то вроде этого: link.0.validation_rule
затем link.1.validation_rule
и так далее ...
Но если я сделаю это, при отображении ошибок, я получаю следующую ошибку на мой взгляд:
Array to string conversion
Ошибка выдается на vendor/laravel/framework/src/Illuminate/Support/MessageBag.php
в line 247
.
Что я делаю не так ?, поскольку Laravel не упоминает много для проверки входных массивов.