brenoroosevelt / cakephp-filter
Filter plugin for CakePHP 3.x
Installs: 975
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 0
Forks: 2
Open Issues: 2
Type:cakephp-plugin
Requires
- php: >=5.5.9
- cakephp/cakephp: >=3.3.2 <4.0.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-11-10 21:25:06 UTC
README
Installation
You can install this plugin into your CakePHP application using composer.
The recommended way to install composer packages is:
composer require brenoroosevelt/cakephp-filter
Load the plugin
Add following to your config/bootstrap.php
Plugin::load('BRFilter');
Usage
Controller class
public function index() { $this->loadComponent('BRFilter.Filter'); // add filter and options $this->Filter->addFilter([ 'filter_id' => ['field' => 'Posts.id', 'operator'=>'='], 'filter_title' => ['field' => 'Posts.title', 'operator' => 'LIKE', 'explode' => 'true'], 'filter_category_id' => ['field'=> 'Posts.category_id', 'operator' => 'IN' ] ]); // get conditions $conditions = $this->Filter->getConditions(['session'=>'filter']); // set url for pagination $this->set('url', $this->Filter->getUrl()); // apply conditions to pagination $this->paginate['conditions'] = $conditions; // get pagination $this->set('posts', $this->paginate($this->Posts)); // ... }
Template views
You have to add a form to your index.ctp, corresponding with the alias of your filter configuration.
echo $this->Form->create(); // Match with the filter configuration in your controller echo $this->Form->input('filter_id', ['type' => 'text']); echo $this->Form->input('filter_title', ['type' => 'text']); echo $this->Form->input('filter_category_id', ['options'=>[ /* ... */ ], 'multiple'=>'multiple' ]); echo $this->Form->button('Filter', ['type' => 'submit']); echo $this->Form->end();
Filter options
The following options are supported:
field
(string
) The name of the field to use for searching.operator
(string
) The operator used for searching.explode
(boolean
) Used only with operatorLIKE
andILIKE
to explode the string query.
Operators
The following options are supported:
=
>
<
>=
<=
LIKE
ILIKE
IN
Persisting query (session)
All query strings are persisted using sessions. Make sure to load the Session component.