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