如何在验证消息中使用捕获的异常消息?

时间:2019-10-12 00:02:33

标签: php laravel validation

我有以下课程:

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中时,此方法有效,但我真的很想通过规则类使此代码有效,以保持我的代码井井有条。

如何在规则类中使用替换器?

0 个答案:

没有答案