Вот такой класс:
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() ?