Deprecated
h1. CakePHP Filter Plugin Paginates Filtered Records
h2. Background
This plugin is a fork of "Jose Diaz-Gonzalez's Filter component":http://github.com/josegonzalez/cakephp-filter-component, which is something of a fork of "James Fairhurst's Filter Component":http://www.jamesfairhurst.co.uk/posts/view/cakephp_filter_component/, which is in turn a fork by "Maciej Grajcarek":http://blog.uplevel.pl/index.php/2008/06/cakephp-12-filter-component/, which is ITSELF a fork from "Nik Chankov's code":http://nik.chankov.net/2008/03/01/filtering-component-for-your-tables/. "Chad Jablonski":http://github.com/cjab/cakephp-filter-plugin then added RANGE support with a few bug fixes. "jmroth":http://github.com/jmroth/cakephp-filter-plugin pointed out a pretty bad redirect issue and "fixed it". Then "Jose Diaz-Gonzalez":http://josediazgonzalez.com/ took everyone's changes, merged them together, and updated the Component to be a bit more 1.3 compliant.
That's a lot of forks...
This also contains a view helper made by "Matt Curry":http://github.com/mcurry/cakephp-filter-component.
This also uses a behavior adapted from work by "Brenton":http://bakery.cakephp.org/articles/view/habtm-searching to allow for HasAndBelongsToMany and HasMany relationships.
This works for all relationships.
h2. Installation
@git clone git://github.com/josegonzalez/cakephp-filter-plugin.git filter@
@git submodule add git://github.com/josegonzalez/cakephp-filter-plugin.git plugins/filter@
h2. Usage
@var $components = array('Filter.Filter');@
h3. Note on 1.2 usage
In order for this to work in 1.2, you need to have the following in your controller:
And then merge the $filterOptions variable on anything pagination uses. It can be set globally using PaginatorHelper::options() as follows (in the view):
@@
h2. Advanced Usage
h3. Overriding the Filter pagination
h4. Option 1: Controller-wide
By setting the @$paginate@ variable for your controller, the Filter component merges those into it's own rules before processing incoming information.
h4. Option 2: Action-specific
You can merge in things to the paginate array before any pagination happens if necessary.
h3. Setting up search forms
h4. Option 1: Helper
Use the helper In between the row with all the column headers and the first row of data add:
@@
The first parameter is the model name. The second parameter is an array of fields. If you don't want to filter a particular field pass null in that spot.
h4. Option 2: Manually
Create your own form however you want. Below is such an example.
h3. Filtering hasMany and hasAndBelongsToMany relationships
Add Behavior to model (only necessary for HABTM and HasMany):
h3. Initialization Tips
These different initialization options are combined in the setup array. Defaults are shown below.
h2. Todo