You would need to properly upgrade the component and make it work with your version of cake.
I propose you try https://github.com/cakedc/search It is up to date, more sophisticated and does the job with less configuration Am Montag, 18. Februar 2013 09:43:46 UTC+1 schrieb Victor Musvibe: > > Hi Bakers > > I implemented a search component from this url > http://www.designaeon.com/cake-php-search-component/ but I have a few > problems. At first Cake didn’t recognize the component. After I renamed > search.php in SearchComponent.php > > I got another Error: Declaration of SearchComponent::initialize() should > be compatible with Component::initialize(Controller $controller) > [APP/Controller/Component/SearchComponent.php, line 40] > > Below is my code for SearchComponent > > <?php > class SearchComponent extends Component { > > var $controller = null; > > function initialize(&$controller) > { > $this->controller = $controller; > } > > function getConditions(){ > $conditions = array(); > $data= empty($this->controller->params['named']) ? > $this->controller->params['url'] : $this->controller->params['named'] ; > $this->controller->{$this->controller->modelClass}->schema(); > foreach($data as $key=>$value){ > > if(isset($this->controller->{$this->controller->modelClass}->_schema[$key]) > && !empty($value)){ > > switch($this->controller->{$this->controller->modelClass}->_schema[$key]['type']){ > case "string": > $conditions[$this->controller->modelClass . "." .$key . " LIKE"] = > "%".trim($value)."%"; > break; > case "integer": > $conditions[$this->controller->modelClass . "." .$key] = $value; > break; > case "date": > if(isset($this->controller->params['named'][$key."_fromdate"])){ > $from = date("Y-m-d", strtotime( > $this->controller->params['named'][$key."_fromdate"] )); > $conditions[$this->controller->modelClass.".".$key." >="] = > trim($from); > } > if(isset($this->controller->params['named'][$key."_todate"])){ > $to = date("Y-m-d", strtotime($this->params['named'][$key."_todate"])); > $conditions[$this->controller->modelClass.".".$key." <="] = $to; > } > } > } > } > return $conditions; > > } > > } > ?> > > and in my index view i am using this code > > <div class="itsuportrequests index"> > <?php echo $this->element('SearchForm/set_pagination_named');?>//set > pagination named element > <?php echo $this->element('SearchForm/form') ?>//search form element > <h2><?php __('ItSupportRequests');?></h2> > > <table cellpadding="0" cellspacing="0"> > <tr> > <th><?php echo $this->Paginator->sort('id');?></th> > > <th class="actions"><?php __('Actions');?></th> > </tr> > <?php > $i = 0; > foreach ($itSupportRequests as $itSupportRequest): > if ($i++ % 2 == 0) { > } > ?> > <tr> > <td><?php echo $itSupportRequest['ItSupportRequest']['id']; > ?> </td> > <td class="actions"> > > <?php echo $this->Html->link(__('Edit', true), array('action' => > 'edit', $itSupportRequest['ItSupportRequest']['id'])); ?> > <?php echo $this->Html->link(__('Delete', true), array('action' => > 'delete', $itSupportRequest['ItSupportRequest']['id']), null, > sprintf(__('Are you sure you want to delete # %s?', true), > $itSupportRequest['ItSupportRequest']['id'])); ?> > </td> > </tr> > <?php endforeach; ?> > </table> > <p> > </p> > </div> > > I have created 2 Elements SearchForm/form.ctp and > SearchForm/set_pagination_named.ctp > > /*form.ctp*/ > <div class='search' style="margin:10px;"> > <fieldset> > <h2> Search <?php echo$this->params['controller'] ?></h2><hr/> > <?php echo $this->Form->create(array('action' => 'index', 'type' => > 'GET')); ?> > <?php echo $this->Form->input('id', array( > 'label'=>'ID','type'=>'text')); > echo $this->Form->submit('Search',array('class'=>'button')); > ?> > > <?php echo $this->Form->end(); ?> > </fieldset> > </div> > > and here is my set_pagination_named.ctp > > <?php > $data_arr=array(); > if(isset($this->params['url']) || isset($this->params['named'])){ > $data=isset($this->params['named'] ) && !empty($this->params['named']) > ? $this->params['named']:$this->params['url']; > $possibledata=array('id');//possible fields > foreach($data as $key=>$value){ > if(in_array($key,$possibledata) && !empty($value)){ > $data_arr[$key]=$data[$key]; > } > } > } > ?> > <?php > $this->Paginator->options(array( > 'evalScripts' => true, > 'url'=>$data_arr > )); > ?> > > Thank you in advance. > > -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
