0

我有一个使用 CakePHP 2.x 的站点。有一个后端界面,其中动作使用标准的 Cake 布局和视图,但其中一些动作也作为“对话框”向前端用户公开(相同的功能,只是可以放入 iframe 中的布局)。

app/Config/router.php我添加了以下内容:

Router::connect('/dialog/:controller', array('action' => 'index'));
Router::connect('/dialog/:controller/:action');
Router::connect('/dialog/:controller/:action/**');

这可以正常工作,但是当尝试使用 HTML 助手的link()方法时问题就开始了。如果我尝试创建如下链接:

$this->Html->link('edit account', array('controller' => 'users', 'action' => 'edit'));

我得到以下信息:

<a href="/dialog/users/edit">edit account</a>

当链接在对话框中时,这很好用,但我不希望非对话框页面链接到对话框。

如何控制在特定页面中使用两个 URL 中的哪一个?

一旦我知道正在呈现的页面是否是对话框,或者甚至在调用中的link()某些内容允许我覆盖它,我是否可以从 AppController 中调用某些内容。

我知道有一个“前缀”选项,它允许像这样的 URL,/user/dialog_edit但如果可能的话,我想保持/dialog/users/edit格式。我也知道我可以硬编码 URL 与在数组中传递控制器/动作/id/等,并且我预计路径/模型名称不会改变,但我想用 CakePHP 的惯用方式来做这件事,如果可能的。

4

0 回答 0