Поиск DC с использованием фильтра всего за одно действие

у меня есть devices/index страница, на которой по умолчанию я не хочу показывать «вышедшие из строя» устройства, если не установлен соответствующий флажок

поэтому я использовал поисковый плагин CakeDC 3, и я

DevicesTable

 public $filterArgs = [


'include_out_of_order' => [
'type' => 'finder',
'finder' => 'outOfOrder',
'allowEmpty' => true
],

// ...
// lot of other filters
// ...

]


public function findOutOfOrder($query, array $options)
{
if(isset($options['include_out_of_order']) &&  $options['include_out_of_order'] == true)
return $query;
else
return $query->where(['Devices.device_status_id !=' => 2]);  //status = 2 means the device is out of order

}

Теперь это работает в моем index просматривать, но это работает также в двух других действиях, где я фильтрую записи с помощью плагина поиска.

Я хочу, чтобы этот конкретный фильтр применялся только в index действие, в то время как все остальные фильтры должны работать в других действиях контроллера устройств

Есть ли другой способ добиться того, что я пытаюсь сделать, используя плагин cakeDC, или я должен использовать какой-то собственный код в моем index действие внутри контроллера? Было бы легко, но я бы хотел найти более чистое решение

0

Решение

Я хочу, чтобы это поведение применялось только в действии индекса, а не каждый раз, когда я применяю фильтр

В вашем контроллере:

if ($this->request->action === 'index') {
$this->loadComponent('Search.Prg');
}

Тем не менее, я бы порекомендовал плагин поиска FoC. Он имеет лучшую архитектуру и лучше подходит для Cake3. Он может делать то же самое, но имеет гораздо меньше кода, чем плагин CDC.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector