CakePHP中的不同视图路径

时间:2013-09-22 18:03:27

标签: php cakephp routing

我可以在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

如何使用无参数路线美化我的观点并编辑路线?

2 个答案:

答案 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