好吧,我不知道我是否采取了错误的做法,但我被困在这里......
我们已经开发了我们的网站,我们有许多控制器需要id和特殊变量,链接已经重定向到控制器传递预期的内容。
新要求是使用 friendlyUrls ,其理念是:而不是:
http://domain.com/search/advanced/term:head/city:/set:show-all/sort:basic-relevance
现在读取
或传递选项。
http://domain.com/search/in-edinburgh-scotland/by-rating/head
我的想法是,在Routes.php的开头有一个简单的如果:
$friendlyUrl = $_SERVER['REQUEST_URI'];
$friendlyUrl = split('/', $friendlyUrl);
foreach ($friendlyUrl as $key => $params) {
if(empty($params)){
unset($friendlyUrl[$key]);
}
if($params == 'search'){
Router::connect('/search/*', array('plugin'=>'Search','controller' => 'Search', 'action' => 'advancedSearch', 'term'=>'head));
}elseif ($params == 'employers') {
# code...
}elseif ($params == 'employer-reviews') {
# code...
}elseif ($params == 'jobs') {
# code...
}
}
那不起作用,然后我尝试在我的 AppController 中添加类似的东西,什么都没有。
总而言之,必须做的是:
任何人都有想法?!谢谢
答案 0 :(得分:2)
你肯定想看一下书中的路由页面
http://book.cakephp.org/2.0/en/development/routing.html
有很多选项可以匹配url模式以将参数传递给控制器。
Router::connect(
'/search/:term',
array('controller' => 'search', 'action' => 'advanced'),
array(
'pass' => array( 'term')
)
);
你应该设置city&的默认值。集&在动作函数参数定义中排序:
public function advanced($term, $city='optional', $sort = 'basic'){
// your codes
}
这样做的好处是,你的$ this-> Html->链接将反映他们生成的路径中的路线。 (反向路由)
蛋糕中的路线非常强大,你应该能够得到一些体面的友好网址。我使用的另一件事是使用行为 - 缓慢 - 从内容项标题生成可搜索字段 - 用于cms中的页面/内容类型。
祝你好运!