【问题标题】:Troubles creating a new cakephp plugin in a working application + wrong usage of requestAction在工作应用程序中创建新的 cakephp 插件时出现问题 + requestAction 的错误使用
【发布时间】:2014-05-15 17:14:31
【问题描述】:

我正在尝试为我的(已经工作的)cakephp 应用程序创建一个新插件。我按照手册使用完全相同的数据(ContactManager 插件、联系人控制器等),但是当我尝试使用其 url(example.com/contact_manager/contacts/index)加载它时,cakephp 抱怨 LanguageController(即使用我的布局文件中的 requestAction 调用)不在我的插件路径中。它确实不应该在那里,因为它是一个应用程序控制器......

我做错了什么?

我没有发布代码,因为我使用了与 cakephp 手册完全相同的代码,这里: http://book.cakephp.org/2.0/en/plugins.html

【问题讨论】:

  • 生成错误的代码不在您链接的页面上。虽然我已经回答了这个问题,请在问题中添加is called with a requestAction from my layout file,以便清楚。

标签: cakephp


【解决方案1】:

当前插件和前缀保持不变

如果您执行以下操作:

$this->requestAction(array(
    'controller' => 'x', 
    'action' => 'y'
));

并且当前请求在您的应用程序中,您正在请求相当于 url:

/x/y

如果你在你的 foo 插件中,同样的代码相当于 url:

/foo/x/y

要始终从您的应用请求某些内容,请使用错误值定义键“插件”:

$this->requestAction(array(
    'controller' => 'x', 
    'action' => 'y', 
    'plugin' => false
));

或者使用字符串 url。

你在做一些奇怪的事情

CakePHP 抱怨 LanguageController(使用我的布局文件中的 requestAction 调用)

不正常这样使用 requestAction - 你应该发送信息到视图(意思是视图层 - 视图类、视图文件、布局、元素、帮手)。您不会询问视图中的信息。编写这样的代码是问题的根源。例如,如果语言控制器抛出异常 - 所有 url 都会出错。

【讨论】:

  • 谢谢!你的回答非常有用:)
  • 关于requestAction的错误用法,我知道wiews应该只显示信息并且他们不应该要求它们,但是我看不到只有在我需要它们时才能检索这些信息的更好方法.例如,我正在使用主题类,并且我必须仅在某些主题中显示语言......我可以从控制器传递该数据,但大多数时候它是无用的......有没有更好的方法这样做?
猜你喜欢
  • 2016-01-04
  • 2011-05-15
  • 2020-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 2019-12-29
相关资源
最近更新 更多