diff --git a/src/Listener/ViewSearchListener.php b/src/Listener/ViewSearchListener.php index 87694e80..02747cb1 100644 --- a/src/Listener/ViewSearchListener.php +++ b/src/Listener/ViewSearchListener.php @@ -15,7 +15,9 @@ class ViewSearchListener extends BaseListener * @var array */ protected $_defaultConfig = [ - 'enabled' => null + 'enabled' => null, + 'autocomplete' => true, + 'selectize' => true, ]; /** @@ -41,6 +43,10 @@ public function implementedEvents() */ public function afterPaginate(Event $event) { + if (!$this->_table()->behaviors()->has('Search')) { + return; + } + $enabled = $this->config('enabled') ?: !$this->_request()->is('api'); if (!$enabled) { return; @@ -79,6 +85,7 @@ protected function _deriveFields() $fields = []; $schema = $table->schema(); + $config = $this->_config; foreach ($filters->all() as $filter) { if ($filter->config('form') === false) { @@ -99,10 +106,7 @@ protected function _deriveFields() 'type' => 'text' ]; - $value = $request->query($field); - if ($value !== null) { - $input['value'] = $value; - } + $input['value'] = $request->query($field); if (empty($input['options']) && $schema->columnType($field) === 'boolean') { $input['options'] = ['No', 'Yes']; @@ -111,11 +115,16 @@ protected function _deriveFields() if (!empty($input['options'])) { $input['empty'] = true; + if (empty($input['class']) && !$config['selectize']) { + $input['class'] = 'no-selectize'; + } + $fields[$field] = $input; + continue; } - if (empty($input['class'])) { + if (empty($input['class']) && $config['autocomplete']) { $input['class'] = 'autocomplete'; }