可能重复,但我没有得到任何正确答案或帮助
实际上我想这样做:
我当前的网址是:http://mysite.com/MyController/view/page1
但我想要的是:http://mysite.com/MyController/page1
表示我想隐藏URL中的操作名称。
我用过
Router::connect('/:controller/:id',array('action' => 'view'),array('id' => '[0-9]+'));
但它不适合我
低于一个工作正常但
Router::connect('/:controller/*', array('action' => 'view'),array('id' => '[0-9]+'));
它适用于所有控制器,但我想申请特定的控制器
答案 0 :(得分:1)
您可以使用Cake的路由来实现此功能。
将以下内容添加到您的app / Config / routes.php
Router::connect('/Controller/page1', '/Controller/view/page1');
但您必须为每个“页面”添加路线。
您可以使用通配符路径匹配以/ Controller /:
开头的所有内容Router::connect('/Controller/*', '/Controller/view/');
或者,不涉及路线:
class FooController extends AppController
public function index($stub) {
$data = $this->findByStub($stub);
if (!$data) {
die('page not found');
}
$this->set('data', $data);
}
}
}
允许您使用/ foo / page1
等网址(例程查找具有匹配'page1'的存根字段的Foo)
这有效,但你将失去反向路由的好处,这意味着你可以制作这样的链接:$ this-> Html-> link(array('controller'=>'foo','action' =>'view','page1');哪个蛋糕将自动重写以生成:/ foo / page1
答案 1 :(得分:1)
使用
Router::connect('/MyController/:id', array('controller' => 'MyController','action' => 'view'),array('id' => '[0-9]+'));
答案 2 :(得分:0)
使用此代码
Router::connect('/:controller/*', array('action' => 'view'),array('id' => '[0-9]+'));
答案 3 :(得分:0)
为您的控制器尝试以下代码,这里使用GroupsController作为示例
您可以在app \ Config \ routes.php
中添加此内容Router::connect('/groups/:slugParam', array('controller' => 'groups', 'action' => 'index'), array('slugParam' => '[a-zA-Z0-9]+'));
这应该重定向表单的所有请求
http://www.site.com/groups/ *至http://www.site.com/groups/index
(* =>控制器名称后面的任何内容)
所以现在我必须改变GroupsController中的默认索引函数以反映这种变化
<?php
App::uses('AppController', 'Controller');
class GroupsController extends AppController {
public function index($id = null) {
//pr($this->request->params); this where all data is intercepted...
if(isset($this->request->params['slugParam']) && !empty($this->request->params['slugParam'])) {
// i have a slug field in groups databsae and hence instead of id am using slug field to identify the post.
$data = $this->Group->findBySlug($this->request->params['slugParam']);
$this->set('group', $data);
$this->render('/groups/view');
}
}
}
?>
答案 4 :(得分:0)
使用此代码
Router::connect('/MyController/:id', array('controller' => 'MyController','action' => 'view'),array('id' => '[0-9]+'));