我有一个使用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>
当链接在对话框中时,这很有效,但我不希望非对话框页面链接到对话框。
如何控制特定网页中使用哪两个网址?
一旦我知道正在呈现的页面是否是对话框,甚至是link()
调用中允许我覆盖它的内容,我是否可以在AppController中调用。
我知道有“前缀”选项允许使用/user/dialog_edit
等网址,但我希望尽可能保留/dialog/users/edit
格式。我也知道我可以硬编码URL与传递控制器/ action / id / etc在一个数组中,我不希望路径/模型名称改变,但我想这样做CakePHP的惯用方法,如果可能的。