CakePHP自定义路由器URL顺序



我正在使用CakePHP到我的一个项目。当我在设计URL时,我知道CakePHP在我使用

时做得很好
$this->Html->Link('Add Post', array('controller'=>'posts', 'action'=>'edit', 1234))
CakePHP将生成URI /appname/posts/edit/1234。但是我认为/appname/post/1234/edit比前一个好。我找不到一个解决办法。

I've try

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

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

有人知道如何实现这个URL吗?基本上我不想修改函数路由器::url,我需要的是在我的ctp视图文件和CakePHP中编写代码,以了解我放置的正确顺序。我该怎么做呢?

BTW,我使用CakePHP 2.3.

这是一个路由作业,更具体地说是反向路由: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的顺序来反向路由来自posts控制器的编辑方法的任何请求。在您看来,链接应该这样构造:

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

注意我们在routes.php中分配的额外的id参数被传递。Url应该看起来像:

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

在我看来,这是一个坏的做法,从传统和SEO的角度来看。

最新更新