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']; 
> ?>&nbsp;</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.


Reply via email to