CakePHP插件 - 错误"无法找到控制器"

时间:2014-07-31 06:56:04

标签: cakephp plugins

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

我现在尝试将其转换为插件: 我在app / plugin中创建了一个文件夹UserManager。

当我尝试转到我的某个控制器的网址时,收到消息缺少控制器。 所有插件都在Bootstrap.php(CakePlugin::loadAll();)中加载。

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

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

有人可以建议我一个解决方案吗? 提前谢谢。

(请参阅下面的代码说明)

我添加了控制器,模型和视图,如下所示(Bake生成的骨架并检查:确定):

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

中的视图

没什么特别的。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

由于我认为在AppController loginAction中包含了AuthComponent设置,请记下该调用并检查插件的名称。在我的情况下,插件名称是Barracuda,在调用barracuda之前不会发生错误,第一个字母是小写字母。

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

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