我可以在routes.php
中以某种方式更改简单网址的生成和接受路由:
Router::connect('/login', array('controller' => 'users', 'action' => 'login'));
Router::connect('/logout', array('controller' => 'users', 'action' => 'logout'));
Router::connect('/register', array('controller' => 'users', 'action' => 'add'));
这就像一个魅力。但是,这不是:
Router::connect('/eintrag/:id', array('controller' => 'entries', 'action' => 'view'));
Router::connect('/bearbeiten/:id', array('controller' => 'entries', 'action' => 'edit'));
当我尝试通过echo $this->Html->url(array('controller' => 'entries', 'action' => 'view', $entry['id']))
获取此路线时,我得到/entries/view/1
。并且路由器不接受URL /eintrag/1
。
如何使用无参数路线美化我的观点并编辑路线?
答案 0 :(得分:1)
您需要在路线中使用第三个参数,因为您专门传递了:id
。
// SomeController.php
public function view($id = null) {
// some code here...
}
// routes.php
Router::connect(
'/eintrag/:id', // e.g. /eintrag/1
array('controller' => 'entries', 'action' => 'view'),
array(
// this will map ":id" to $id in your action
'pass' => array('id'),
'id' => '[0-9]+'
)
);
应该这样做。
更多信息@ the cookbook
答案 1 :(得分:0)
$ this-> Html-> url()只是一个帮助函数,只是根据传递的参数生成一个URL,但是当您实际打开此Url时,它会将为/ eintrag / 1发出的请求路由到/条目/视图/ 1