Проверка принимаемых данных в Laravel (часть 2)

В прошлой статье "Проверка принимаемых данных в Laravel" мы рассмотрели несколько примеров для фильтрации данных с помощью метода "validate". В этой статье мы разберём примеры создания собственных правил проверки и способ изменения сообщений об ошибках.

Проверка запроса формы

Существует возможность создавать свои проверки с помощью запросов формы. Для создания необходимо выполнить команду Artisan под названием "make:request". Воспользуемся примером из предыдущей статьи (создание проверки для формы добавления поста в блог):
php artisan make:request StoreBlogPost
- в результате выполнения такой команды будет создан класс "StoreBlogPost" в папке app/Http/Requests. В этот класс можно добавить метод. Например, с теми правилами, которые использовали для проверки сохраняемых данных статьи:
<?php
public function rules() {
   return [
      'title' => 'required|unique|max:255',
      'body' => 'required',
   ];
}
?>
Для запуска проверки по этим правилам необходимо указать тип запроса в методе контроллера:
<?php
public function store(StoreBlogPost $request) {
   // запрос уже прошёл проверку
   // данными можно пользоваться
}
?>

Проверка прав доступа

Для проверки права на изменения ресурса можно воспользоваться методом "authorize". Этот метод так же содержится классом запроса формы:
<?php
public function authorize() {
   $comment = Comment::find($this->route('comment'));

   return $comment && $this->user()->can('update', $comment);
}
?>
Если метод "authorize" вернёт false, то будет выдан HTTP ответ сервера с кодом 403. И метод контроллера не будет выполнен. Если же нужно разместить логику проверки доступа в другой части проекта, то просто замените весь код метода на return true;, чтобы всегда возвращалось логическое "true".

Обратите внимание на метод "route". Через него можно получить доступ к параметрам URI. К примеру, как к параметру "comment": Route::post('comment/{comment}');.
Все запросы формы в Laravel наследуют базовый класс запроса. Поэтому можно использовать метод "user" для получения данных текущего пользователя.

Настройка сообщений об ошибках

Чтобы задать свой текст сообщениям об ошибках, необходимо переопределить метод "messages". Этот метод должен возвращать массив из "атрибутов.правил" (через точку) и их сообщения в таком виде:
<?php
public function messages() {
   return [
      'title.required' => 'Вы не указали заголовок статьи',
      'body.required'  => 'Содержание статьи не может быть пустым',
   ];
}
?>
Рекомендуем посмотреть нашу статью "Сообщения об ошибках в валидаторе Laravel". Там описан способ изменения сообщений. Приведены примеры автоматической подстановки атрибутов в сообщения и сохранение сообщений в языковые файлы.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб