Cake PHP插件调用路由问题

时间:2014-11-18 16:01:42

标签: php cakephp

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

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

通话就像:

[URL] / plugin_one /管理/设定

[URL] / plugin_two /管理/设定

以这种方式创建链接:

$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"我得到了插件一的设置页面。我得到了插件二的设置页面。

BUT:

如果我打开了Plugin One的设置页面,然后尝试打开插件二的设置页面,那么管理员控制器就会以某种方式打开插件管理器。被称为"插件二"。

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

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

在我的"设置"动作,我也得到了插件的设置数据:

$this->request->data = $settings["plugin_one"];

例如,我在插件一的设置页面上,我的页面标题是"插件一 - 设置",我的页面内容是"插件一&#34的不同设置选项;

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

有趣的是,这种情况也是如此。

如果我打开"插件二"设置页面,然后尝试打开"插件一"设置页面,它是相同的东西。现在我会看到"插件两个 - 设置"我和#34; Plugin One"使用"插件2和#34;设置页面请求数据。

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

编辑:

我使用"调试工具栏"插件也是。 如果我打电话给#34; Plugin One"设置,在"调试工具栏" - > "包含" - > "插件"我看到" Plugin One"。 现在我打电话给#34; Plugin Two"设置,以及"调试工具栏" - > "包含" - > "插件"我看到" Plugin One"。

编辑#2:

如果我等待大约5分钟(一根香烟;-))并点击F5,那么"插件2"设置页面正确加载,并在“调试工具栏”中。 - > "包含" - > "插件"我看到"插件二"

如果我使用具有相同Controller和Action名称的不同插件,可能会出现内部缓存问题吗?

1 个答案:

答案 0 :(得分:0)

我找到了以下解决方案:

重命名控制器......

plugin_one / admin => plugin_one / poAdmin plugin_two / admin => plugin_two / ptAdmin

等等......

现在它有效......似乎CakePHP不喜欢不同插件中的多个相同的名称控制器