You can do it either with PRG (post redirect get) concept:

http://bakery.cakephp.org/articles/luciansabo/2011/08/12/post_redirect_get_design_pattern_component
http://cakedc.com/downloads/view/cakephp_search_plugin

or with write the posted form data  to a session once and keep reading it 
through pagination

something like:

                if(!empty($this->data['User']['search_name'])) {
                        $this->Session->write('conditions.firstname', 
$thisis->data['User']['search_name']);
                }

                if($this->Session->check('conditions')) {
                        $conditions = $this->Session->read('conditions');
                } else {
                        $conditions = null
                }

                $this->paginate = array(
                        'recursive' => -1,
                        'conditions' => $conditions,


Andras Kende
http://www.kende.com



On Oct 29, 2011, at 1:27 PM, andrewperk wrote:

> Hello,
> 
> I've implemented a user model and I have a simple search form for
> searching by gender, age, location. I'm using the paginator to
> paginate the results. The problem is that it's only remembering the
> search criteria on the first page. When I click on page 2, or next
> etc.. It defaults back to searching all users.
> 
> Here's my dirty search code in my controller, basically it just checks
> the submitted form fields and does a query on the matching field in
> the Users table and then paginates the results:
> 
> if (!empty($this->data)) {
>    // by name
>    if (!empty($this->data['User']['search_name'])) {
>       $this->paginate = array('conditions' => array('visible'=>1,
> 'OR'=>array(
>               'User.username LIKE' => 
> '%'.$this->data['User']['search_name'].'%',
>               'User.firstname LIKE' => '%'.$this->data['User']['search_name'],
>               'User.lastname LIKE' => '%'.$this->data['User']['search_name'])
>                ), 'limit'=>'10', 'order'=>'User.username');
>   }
>   // by gender
>   else if (!empty($this->data['User']['search_gender'])) {
>       $this->paginate = array('conditions' => array(
>               'visible'=>1,
>               'User.gender' => $this->data['User']['search_gender']
>               ), 'limit'=>'10', 'order'=>'User.username');
>  }
>  // by state
>  else if (!empty($this->data['User']['search_state'])) {
>       $this->paginate = array('conditions' => array(
>               'visible'=>1,
>               'User.state' => $this->data['User']['search_state']
>               ), 'limit'=>'10', 'order'=>'User.username');
>  }
> 
>   // Send the results for the above criteria to the view
>   $results = $this->paginate('User');
>   $this->set('users', $results);
> 
>     }
>     // Default retrieval of all users
>    else {
>       $this->paginate = array('conditions'=>array('visible'=>1),
> 'limit'=>'10', 'order'=>'User.username');
>       $this->set('users', $this->paginate('User'));
>       }
> 
> I'm trying to figure out how to make subsequent pages of the
> pagination remember my search criteria. Thanks for any help.
> 
> -- 
> Our newest site for the community: CakePHP Video Tutorials 
> http://tv.cakephp.org 
> Check out the new CakePHP Questions site http://ask.cakephp.org and help 
> others with their CakePHP related questions.
> 
> 
> To unsubscribe from this group, send email to
> [email protected] For more options, visit this group at 
> http://groups.google.com/group/cake-php

-- 
Our newest site for the community: CakePHP Video Tutorials 
http://tv.cakephp.org 
Check out the new CakePHP Questions site http://ask.cakephp.org and help others 
with their CakePHP related questions.


To unsubscribe from this group, send email to
[email protected] For more options, visit this group at 
http://groups.google.com/group/cake-php

Reply via email to