Ошибка сообщения проверки входного массива Laravel 5.5

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

The format of link.1 is invalid.

И я хочу показать что-то вроде этого:

The format of 'value' is invalid.

Я читал, что есть метод под названием 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;
    }
}

Согласно документации:

This method should return an array of attribute / rule pairs and their corresponding error messages

Итак, поскольку я обрабатываю массив входных данных, я подумал, что мне нужно перебрать их, чтобы получить их ключ, чтобы получить что-то вроде этого: link.0.validation_rule, затем link.1.validation_rule и так далее ...

Но если я это сделаю, при отображении ошибок я получаю следующую ошибку на моем представлении:

Array to string conversion

Ошибка выкидывается на vendor/laravel/framework/src/Illuminate/Support/MessageBag.php по адресу line 247.

Что я делаю не так? Поскольку Laravel не упоминает много о проверке входных массивов.

Ваша проверка работает должным образом?

Tharaka Dilshan 04.10.2018 20:02

@TharakaDilshan Да, если я удалю метод переопределения messages(), он работает хорошо, но я не хочу, чтобы Laravel показывал сообщение по умолчанию, которое он использует при получении массива входных данных, я хочу изменить это сообщение, чтобы оно не отображалось например: The format of link.1 is invalid. вместо этого я хочу что-то вроде The format of 'value_submitted' is invalid.

Aarón Gutiérrez 04.10.2018 20:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
1 194
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Готово, метод 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;
    }

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

Другие вопросы по теме