i have a searches controller and the index function of it is :-

 function index($searchstr, $by='Entity')
     {
      $conditions = array();
        switch($by) {
        case 'Tags':
        case 'doc':
        case 'video':
        case 'image':
        case 'slide':
                $modelName = 'Entity';
                if ($by=='doc'||'video'||'image'||'slide') {
                        $conditions = array('Entity.type'=>$by);
                }
                break;
        default:
                $modelName = $by;
                break;
       }

            if(empty($searchstr))
            {
                    $error = 'No search string found';
                    $this->set('error',$error);

            }
            else
                {
                    $fltrstr = urldecode($searchstr);

                    if ($modelName == 'Entity')
                    {
                        if ($by == 'Tags') {
                                $match_fields = array('Entity.tags');
                        }
                        else {
                                $match_fields = array('Entity.title',
'Entity.description', 'Entity.tags');
                        }

                        // The required fields for the o/p are fetched.
                        $match_string = implode(",", $match_fields);
                       $conditions = array_merge(array(" MATCH($match_string)
AGAINST (('$fltrstr')) AND `Entity`.`status`='Y' AND
`Entity`.`approved`='Y'"),
                                                                           
$conditions);

                        // The page title and the tags implementation.
                        $this->pageTitle = "$searchstr - Videos,
Presentations, Pics, Documents on $searchstr | ABC";
                        $this->set('meta_tags',
                                                "$searchstr, $searchstr videos, 
$searchstr presentations,
$searchstr pics, $searchstr documents, $searchstr images");
                                            $this->set('meta_desc',
                                                "$searchstr - Get thousands of 
videos, slides, pics & documents
on $searchstr - the best of internet collected at ABC");

                                        // Save the search query.
                                        
$this->SearchLog->save(array('SearchLog'=>array('query'=>
$searchstr, 'type'=>'A')));

                                        // Find Related Searches.
                                        $match_fields = 
array('SearchLog.query');
                        $match_string = implode(",", $match_fields);

                        $logconditions = array(" MATCH($match_string)AGAINST
(('$fltrstr'))");

                        $queries = $this->SearchLog->find('all', array
('conditions'=>$logconditions));

                        $this->set('queries', $queries);
                    }
                    else
                    {
                        $match_fields = array
('User.first_name','User.last_name',
                            'User.email_address', 'User.uid');

                                        // The required fields for the o/p are 
fetched.
                        $match_string = implode(",", $match_fields);

                        $conditions = array(" MATCH($match_string)AGAINST
(('$fltrstr')) AND `User`.`account_status`='Y'");

                        // The page title and the tags implementation.
                        $this->pageTitle = "Users Matching $searchstr | ABC";
                        $this->set('meta_tags', "$searchstr, Users");
                                        $this->set('meta_desc', "Users Matching 
$searchstr on ABC");
                    }

                    $data = $this->paginate($modelName, $conditions);

                    if(empty($data)){
                        $error = 'No data matching your string';
                        $this->set('error', $error);
                    }

                     // Filters the string
                    $this->set('res', $data);
            }

            $this->set('by',$by);
            $this->set('keyword',$searchstr);
            $this->render($modelName);
   }
}

And its corresponding view element of displaying result and
paginating  is :-

if ($this->params['controller'] == 'searches') {
                                                                                
        $paginator->options(array('url'=>$this-
>passedArgs));


Now corresponding to the above code whenever i search for a string say
"joke" on my site then my url is
www.abc.com/search/joke and is also paginating fine.
but as I filter my result according to its type like(videos,
documents, etc)
then the url is
www.abc.com/search/joke/video which is ok but when i click for the
next page the url is

www.abc.com/search/joke/joke/video/page:1 and so on... the
searchstring comes twice..

I am unable to tackle this one..


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to