Cakephp中缺少插件错误

时间:2014-11-17 20:27:13

标签: cakephp cakephp-2.5

我正在开发cakephp2.5中的一个网站。我有两个插件WebmasterdebugKit。我写的时候

CakePlugin::load('Webmaster', array('bootstrap' => false, 'routes' => false));
CakePlugin::load('webmaster');
CakePlugin::load( 'DebugKit');

该网站在本地系统上正常运行,但在实时服务器上无法运行。但是,如果我删除上述Webmaster之一,则会在本地系统和实时

上显示错误
Error: The application is trying to load a file from the webmaster plugin
Error: Make sure your plugin webmaster is in the app\Plugin directory and was loaded
   

我也试过但没有运气。从2天开始苦苦挣扎。还看到了这些链接 link1 link2

这是我的WebmasterAppController

<?php

App::uses('AppController', 'Controller');

class WebmasterAppController extends AppController{
  public $theme= "beyond";
  //public $layout=NULL;
  public function beforeFilter(){
    //$this->Auth->allow('login');
    $this->Auth->loginAction= array('controller'=>'users', 'action'=>'login');
    $this->Auth->loginRedirect= array('controller'=>'users', 'action'=>'index');
    $this->Auth->loginError= 'Invalid Email/Password!';
    $this->Auth->authError= 'You are not authorised to access!';
    $this->Auth->logoutRedirect= array('controller'=>'users', 'action'=>'login');
    AuthComponent::$sessionKey = 'Auth.Webmaster'; 
    //we don't need to load debug kit
    $this->Components->unload('DebugKit.Toolbar');

    parent::beforeFilter();
}

}

这是AppController

class AppController extends Controller{

public $cakeDescription = "CakePhp | ";
public $theme = "alpus";
public $ext = 'html';

public $helpers = array('NiceForms', 'coolFun');
public $components = array(
    'DebugKit.Toolbar',
    'Common',
    'Session',
    'Auth' => array(
        'loginRedirect' => array(
            'controller' => 'pages',
            'action' => 'dashboard'
        ),
        'logoutRedirect' => array(
            'controller' => 'users',
            'action'     => 'login',

        ),
        'authenticate' => array(
            'Form' => array(
                'passwordHasher' => 'Blowfish',
                'fields' => array('username' => 'email')
            )
        ),
        'sessionKey' => 'Admin'
    )
);


public function beforeFilter(){
    if (isset($this->params['prefix']) && $this->params['prefix'] == 'admin') {
        $this->theme = 'smart';
        $this->Auth->loginAction = array('controller' => 'users', 'action' => 'admin_login', 'plugin' => false);
    } 
    $this->Auth->allow('register');
}

}

编辑1:
对于cakephp 3.0,我们可以使用

  

public function beforeFilter(Event $ event){

     

$ this-&gt; Auth-&gt; sessionKey =&#39; Auth.User&#39 ;;

     

}

在AppController.php中

为前端和后端设置不同的sessionKey。

1 个答案:

答案 0 :(得分:1)

为什么对同一个插件有多次加载调用?每个插件应该只有一个!

话虽如此,请注意你的外壳,第二个CakePlugin::load()来电使用webmaster代替Webmaster。插件名称应以大写字母开头,就像对应的目录名一样。

您的本地文件系统很可能不区分大小写,因此即使外壳不匹配也可以找到插件目录。

更新看起来我最初错了,如果CakePHP会告诉您在没有添加webmaster电话的情况下加载插件CakePlugin::load('webmaster'),那么您必须在代码中的其他地方使用了小写的webmaster