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
-~----------~----~----~----~------~----~------~--~---