我正在尝试为我(已经在工作)的cakephp应用程序创建一个新插件。我已经按照手册使用完全相同的数据(ContactManager插件,联系人控制器等),但是当我尝试使用其url(example.com/contact_manager/contacts/index)加载它时,cakephp抱怨LanguageController(这是使用我的布局文件中的requestAction调用)不在我的插件路径中。它确实不应该存在,因为它是一个应用程序控制器......
我做错了什么?
我没有发布代码,因为我使用了与cakephp手册完全相同的代码,这里: http://book.cakephp.org/2.0/en/plugins.html
答案 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都将是错误。