Ошибка сообщения проверки входного массива Laravel 5.5 - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь показать пользовательское сообщение проверки с входными данными массива, когда один из них не проходит проверку успешно, поскольку ошибка, которую 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 не упоминает много для проверки входных массивов.

1 Ответ

0 голосов
/ 04 октября 2018

Готово, метод messages() должен возвращать массив сообщений следующим образом:

    public function messages()
    {
        $messages = array();
        foreach($this->imagenes as $key => $valor) {
            $messages['imagenes.'.$key.'.mimes:jpeg,png,jpg'] = "La imagen ".$valor." no contiene un formato válido";
            $messages['imagenes.'.$key.'.max:5120'] = "La imagen ".$valor." no contiene un formato válido";


        }

        foreach($this->links as $key => $valor) {
            $messages['links.'.$key.'.url'] =  "El link ".$valor." no es una URL válida";

        }

        return $messages;
    }

Я надеюсь, что это может быть полезно для других людей, которые имеют такое же сомнение, поскольку большинство подобных вопросов здесь некраткий ответ.Если есть лучший ответ для этого или более чистый способ, если он существует, я был бы рад прочитать его.

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