@paparoma

Фильтрация данных в Laravel?

У меня имеется экшн, который вытаскивает из базы данные и отображает их на странице. На эту страницу необходимо добавить форму для фильтрации результатов (какое то поле должно быть от X до Y и т.п.).
Проблема в том, что я не представляю, как сделать это изящно.
У меня форма отправляется методом GET.
Я проверяю существование значений, валидирую данные при помощи Validator:make(), если валидация не удалась выставляю значения по умолчанию, потом собираю запрос при помощи Query Builder. В итоге получается огромная простыня кода в контроллере.
Как вы реализуете фильтрацию в своих проектах?
  • Вопрос задан
  • 2093 просмотра
Пригласить эксперта
Ответы на вопрос 2
@djay
Все что касается построения динамических SQL-запросов, должно строго находится в моделе. В контроллере, должны только передаватся переменные самого запроса в эту самую модель.

Всю эту простыню, нужно просто вынести в модель.

public function filter()
{
     $validator = Validator::make(...);
    
     if ($validator->fails()) {
         // Ошибка
     } else {
         
         $data = Input::get();
         $result = Model::applyFilter($data);

         return View::make(..);
     }

}
Ответ написан
Комментировать
AmdY
@AmdY
PHP и прочие вебштучки
Валидация на клиенте, зачем пользователю отправлять форму, чтобы узнать что он что-то оформил неверно. А на сервере уже тупо подставляются данные и в случае хаков получит сообщение, что ничего не найдено. Незачем захломлять логикой серверную часть, которую нужно затем дублировать на клиенте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы