我有以下课程:
class Blade implements Rule
{
public function passes($attribute, $value)
{
try {
Storage::disk('templates')->put('validator.blade.php', $value);
View::make('emails.templates.validator', ['lead' => new Lead()])->render();
return true;
}
catch (Exception $exception) {
\Log::info($exception->getMessage());
return false;
}
}
public function message()
{
return 'The :attribute syntax is invalid.';
}
}
在此类中,我仅试图通过捕获render
异常来验证刀片语法。
现在这一切都很好,但是我想让规则提供有关消息中错误的详细信息。
我尝试在catch
块中添加以下代码:
Validator::replacer('blade', function ($message, $attribute, $rule, $parameters) use ($exception) {
return str_replace(':blade_exception', $exception->getMessage(), $message);
});
然后我将message
函数更新为:
public function message()
{
return ':blade_exception';
}
不幸的是,它似乎没有按照需要执行更换。我知道当我通过Validator扩展将此代码放入AppServiceProvider中时,此方法有效,但我真的很想通过规则类使此代码有效,以保持我的代码井井有条。
如何在规则类中使用替换器?