У меня есть следующий класс:
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';
}
К сожалению, она не выполняет замену должным образом. Я знаю, что это работает, когда я помещаю этот код в AppServiceProvider через расширение Validator, но мне бы очень хотелось, чтобы это работало через класс правил, чтобы сохранить мой код организованным.
Как использовать заменитель внутриправила класса?