蛋糕蛋糕PHP插件调用路由问题


cakeCake PHP Plugin Call Routing Problems

我的CakePHP中有一个奇怪的行为。

我创建了不同的插件,对于某些插件,我创建了一个设置页面。

呼叫是这样的:

[url]/plugin_one/admin/setting

[url]/plugin_two/admin/setting

链接的创建方式如下:

$this->Html->link("Setting1", array("plugin" => "plugin_one", "controller" => "admin", "action" => "setting"));
$this->Html->link("Setting2", array("plugin" => "plugin_two", "controller" => "admin", "action" => "setting"));

目前为止,一切都好。

它正在工作,当我单击"设置1"时,我得到插件一的设置页面,如果我点击"设置2",我会得到插件二的设置页面。

但:

如果我打开了插件一的设置页面,

然后尝试打开插件二的设置页面,则以某种方式调用了"插件一"的管理控制器,并具有"插件二"的视图。

由于我在控制器操作"设置"中设置了页面标题,因此我看到了这种奇怪的行为。

$this->set("title_for_layout", "Plugin One - Settings");

在我的"设置"操作中,我也获得了插件的设置数据:

$this->request->data = $settings["plugin_one"];
例如,我在插件一

的设置页面上,我的页面标题是"插件一 - 设置",我的页面内容是"插件一"的不同设置选项。

现在我尝试打开"插件二"的设置页面,我的页面标题是"插件一 - 设置",我的页面内容是"插件二"的不同设置选项,但我没有从模型中获取设置数据,因为我的请求数据也是"插件一"的请求数据。

有趣的是,这种情况以同样的方式发生。

如果我打开了"插件二"设置页面,

然后尝试打开"插件一"设置页面,情况是一样的。现在,我将在我的"插件一"设置页面上看到"插件二 - 设置"标题,其中包含"插件二"请求数据。

我认为内部存在一些路由问题,您怎么看?

编辑:

我也使用"调试工具栏"插件。如果我调用"插件一"设置,在"调试工具栏"->"包含"->"插件"中,我会看到"插件一"。现在我调用"插件二"设置,在"调试工具栏"->"包含"->"插件"中,我看到"插件一"。

编辑#2:

如果我等待大约 5 分钟(一支香烟 ;-))并按 F5,"插件二"设置页面将正确加载,并且在"调试工具栏"->"包含"->"插件"中,我看到"插件二"

如果我使用具有相同控制器和操作名称的不同插件,是否存在内部缓存问题?

我找到了以下解决方案:

已重命名控制器...

plugin_one/管理员 => plugin_one/poAdminplugin_two/管理员 => plugin_two/ptAdmin

等。。。

现在它工作了...似乎 CakePHP 不喜欢不同插件中的多个相同的命名控制器