蛋糕PHP插件 - 错误"Controller could not be found"



我目前正在使用CakePHP 2.5.2我想集成一个插件来管理用户。我第一次测试它作为一个单一的CakePHP应用程序(控制器在app/controller,模型在app/model,视图在app/view/Users): 是ok的

我现在正试图将其转换为插件:我已经创建了一个文件夹UserManager在app/plugin.

当我试图去我的控制器之一的url时,我得到消息丢失的控制器。所有插件都在Bootstrap.php (CakePlugin::loadAll();)中加载。

我试图找到类似的问题和解决方案,但没有一个与我的问题相关(我尝试了一些建议的解决方案,但根本原因不同。

当我在Include部分查看DebugKit时,我可以观察到我的DebugKit插件被加载,但不是我的其他插件…

谁能给我一个解决办法?提前谢谢。

(请在下面找到代码的描述)

我添加了控制器,模型和视图如下(骨架由Bake生成并勾选:ok):

1) app/plugin/model中的模型

UserManagerAppModel.php

<?php
App::uses('AppModel', 'Model');
class UserManagerAppModel extends AppModel {
}
?>

User.php

<?php
App::uses('AuthComponent', 'Controller/Component');
class User extends UserManagerAppModel {
...
}
?>

2) app/plugin/controller

中的控制器

UserManagerAppModel.php:

<?php
App::uses('AppController', 'Controller');
class UserManagerAppController extends AppController {
}
?>

UserController.php:

<?php
class UsersController extends UserManagerAppController {
    public $uses = array('UserManager.User');
    public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('*'); 
    }
    public function login() {       
        }
    ...
?>  

3) app/plugin/view/Users中的视图

没什么特别的。

我认为这是你的路径名称的问题:他们必须包括插件名称。另外,按照惯例,文件夹名称必须以大写字母开头。例如,UserManagerAppModel必须在以下文件中:app/Plugin/UserManager/Model/UserManagerAppModel.php .

参见http://book.cakephp.org/2.0/en/plugins.html#creating-your-own-plugins

因为我相信已经在你的AppController loginAction中包含了AuthComponent设置,请注意调用并检查插件的名称。在我的情况下,插件名称是Barracuda,错误不会发生,直到调用Barracuda,第一个字母是小写的。

'loginAction' => array(
    'controller' => 'users',
    'action' => 'login',
    'plugin' => 'Barracuda'
),

'loginAction' => array(
    'controller' => 'users',
    'action' => 'login',
    'plugin' => 'barracuda'
),

相关内容

最新更新