1

我对 CakePHP 中的路由有疑问。让我解释。

我正在通过Auth组件使用身份验证。我有一个名为account.

当我想编辑一个用户时,我正在调用用户控制器,它给了我一个如下 URL:

/account/users/edit/5

我想要的是有一个像这样的 URL:

/account/edit/5

所以我像这样改变了我的路由器:

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

当我尝试访问时,它起作用了/account/edit/5

我的问题在我看来。如何使用Html->link帮助程序访问此路线?

到目前为止,我只是这样做:

'/'.$this->Session->read('Auth.User.role').'/edit/'.$this->Session->read('Auth.User.id')

但在我看来,它并不是很干净。我想使用助手。

非常感谢你的帮助

4

2 回答 2

1

使用前缀“account”意味着需要在控制器中执行“account_edit”之类的操作。这可能不是你想要的。另外,当会话中已经存在“id”时,为什么还要将它放在 url 中?为什么不只为所有用户使用 url "/account" 并从操作中的会话中获取 id(和角色,如果需要)?

Router::connect('/account',
    array('controller' => 'users', 'action' => 'edit')
);

这将是生成所需 url 的干净方式:

$this->Html->link('Account', array(
    'controller' => 'users',
    'action' => 'edit'
));
// Will return url "/account"

通常总是使用数组形式来指定 url 以受益于反向路由。

于 2013-04-06T08:15:58.500 回答
0

一切都很好,除了路由器。它应该是

Router::connect('/account/*',
    array('controller' => 'users', 'action' => 'edit')
);

并使用 Helper 以各种方式创建锚链接,您可以在此处查看

于 2013-04-06T08:48:27.710 回答