麻烦在工作应用程序中创建一个新的cakephp插件+错误地使用requestAction

时间:2014-05-14 15:17:32

标签: cakephp

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

我做错了什么?

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

1 个答案:

答案 0 :(得分:1)

当前插件和前缀仍然存在

如果您执行以下操作:

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

当前请求在您的应用中,您要求提供相应的网址:

/x/y

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

/foo/x/y

要始终从您的应用中请求某些内容,请使用假名值定义密钥'插件':

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

或使用字符串网址。

你做了一些奇怪的事情

  

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

使用requestAction是不正常 - 您应该向视图发送信息(意味着视图层 - 视图类,视图文件,布局,元素,帮助者)。您不能询问以查看视图中的信息。编写这样的代码是问题的一个方法。例如,如果语言控制器抛出异常 - 所有URL都将是错误。