CakePHP 3.1 - 插件

时间:2015-10-23 07:24:15

标签: php cakephp cakephp-3.0

我创建了一个插件,但没有把它烘焙,基本上有一个帮助器,我想在应用程序中使用它。运行index.php时出现以下错误:

  

致命错误:[Cake \ View \ Exception \ MissingHelperException]无法找到帮助程序类EasyuiHelper。

 #0 C:\xampp\htdocs\myKMG_3\vendor\cakephp\cakephp\src\Core\ObjectRegistry.php(91): Cake\View\HelperRegistry->_throwMissingClassError('Easyui', 'Easyui')
 #1 C:\xampp\htdocs\myKMG_3\vendor\cakephp\cakephp\src\View\View.php(1001): Cake\Core\ObjectRegistry->load('Easyui.Easyui', Array)
 #2 C:\xampp\htdocs\myKMG_3\src\View\AppView.php(40): Cake\View\View->loadHelper('Easyui.Easyui')
 #3 C:\xampp\htdocs\myKMG_3\vendor\cakephp\cakephp\src\View\View.php(335): App\View\AppView->initialize()
 #4 C:\xampp\htdocs\myKMG_3\vendor\cakephp\cakephp\src\View\ViewBuilder.php(350): Cake\View\View->__construct(Object(Cake\Network\Request), Object(Cake\Network\Response), Object(Cake\Event\EventManager), Array)
 #5 C:\xampp\htdocs\myKMG_3\vendor\cakephp\cakephp\src\View\ViewVarsTrait.php(119): Cake\View\ViewBuilder->build(Array, Object(Cake\Network\Request), Object(Cake\Network\Response), Object(Cake\Event\EventManager))
 #6 C:\xampp\htdocs\myKMG_ in C:\xampp\htdocs\myKMG_3\vendor\cakephp\cakephp\src\Error\ErrorHandler.php on line 156

我按照此过程创建了插件:

  1. 我创建了食谱中描述的插件结构:http://book.cakephp.org/3.0/en/plugins.html#creating-your-own-plugins
  2. 我在plugins/Easyui/scr/View/Helper EasyuiHelper.php:

    中为插件创建了帮助器
    namespace Easyui\View\Helper;
    
    use Cake\View\Helper;
    
    class EasyuiHelper extends Helper {
        public function linkButton($id_image='imgLinkButton', $optionsImg=array()){
            // ...
        }
    }
    
  3. 我在config / bootstrap中添加了以下行:

    Plugin::load('Easyui');
    

    这些在View/AppView

    public function initialize()
    {
        parent::initialize();
        $this->loadHelper('Easyui.Easyui');
    }
    

    Controller/AppController中的这个:

    public $helpers = ['Easyui.Easyui'];
    
  4. 我在默认布局文件中使用帮助器:

    $this->Easyui->linkButton('imgPrint', array('iconCls'=>'icon-print', 'onClick'=>'window.print()'));
    
  5. 我哪里出错了? 我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您需要添加composer.json的路径,以便自动加载器可以拾取它们。见http://book.cakephp.org/3.0/en/plugins.html#autoloading-plugin-classes

"autoload": {
    "psr-4": {
        "Easyui\\": "./plugins/Easyui/src",
    }
},
"autoload-dev": {
    "psr-4": {
        "Easyui\\Test\\": "./plugins/Easyui/tests",
    }
}

我建议您始终阅读整个章节,而不仅仅是部分摘录。 ;)