1

我在我的一个项目中使用 CakePHP。当我设计 URL 时,我知道 CakePHP 在我使用时做得很好

$this->Html->Link('Add Post', array('controller'=>'posts', 'action'=>'edit', 1234))

CakePHP 将生成 URI /appname/posts/edit/1234。但我在想/appname/post/1234/edit比前者好。我找不到解决它的方法。

我试过了

$this->Html->Link('Add Post', array('controller'=>'posts', 1234, 'action'=>'edit'))

但是 CakePHP 会忽略数组的顺序。

有谁知道如何实现这个 URL?基本上我不想修改函数Router::url,我需要在我的ctp视图文件和CakePHP中编写代码来知道我放的正确顺序。我怎样才能做到这一点?

顺便说一句,我使用的是 CakePHP 2.3。

4

1 回答 1

4

这是路由的工作,更具体地说是反向路由:http ://book.cakephp.org/2.0/en/development/routing.html

app/Config/routes.php可以添加以下内容:

Router::connect(
    '/:controller/:id/:action',
    array('controller' => 'posts', 'action' => 'edit'),
    array('id' => '[0-9]+')
);

在这里,您告诉 Cake 通过定义pre-route named parameters. 在您看来,链接应该是这样构造的:

echo $this->Html->link('Add Post', array(
    'controller' => 'posts',
    'action' => 'edit',
    'id' => 1234
));

id请注意我们在 中分配的额外参数routes.php。网址应如下所示:

http://appdomain.com/posts/1234/edit

在我看来,从传统和 SEO 的角度来看,这都被认为是不好的做法。

于 2013-05-11T04:14:54.487 回答