@EvgeniiR
https://github.com/EvgeniiR

Почему laravel не видит моё сообщение об ошибке валидации?

Вот такой класс:
spoiler
<?php

namespace App\Rules;

use App\Inspections\Spam;
use Illuminate\Contracts\Validation\Rule;

class SpamFree implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        try{
            return ! resolve(Spam::class)->detect($value);
        } catch(\Exception $e) {
            return false;
        }
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'Custom msg.';
    }
}


Добавил в AppServiceProvider boot() строку:
\Validator::extend('spamfree', 'App\Rules\SpamFree@passes');


И использовал так:
this->validate(request(), ['body' => 'required|spamfree']);


Однако, вместо сообщения об ошибке выводится вот такое: "validation.spamfree".
А если в resources/lang/en добавить 'spamfree' => 'Custom msg', всё работает.
Что я делаю не так, почему не выводится сообщение из метода message() ?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
А пробовали использовать правило так, как в документации предлагают?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы