0

我可以以某种方式更改简单 url 的生成和接受的路由,在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. /eintrag/1并且路由器不接受该网址。

如何像使用无参数路由一样美化我的视图和编辑路由?

4

2 回答 2

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]+'
    )
);

应该这样做。

更多信息@食谱

于 2013-09-22T18:57:44.390 回答
0

$this->Html->url() 只是一个辅助函数,它只是根据传递的参数生成一个 URL,但是当你实际打开这个 URL 时,它会将 /eintrag/1 的请求路由到 /entries/view/ 1

于 2013-09-22T18:16:00.083 回答