Я создал плагин, но не испек его, у которого есть помощник, который я хочу использовать в приложении. При запуске index.php я получаю следующее сообщение об ошибке:CakePHP 3.1 - отсутствует ошибка помощника для плагина
Fatal error: [Cake\View\Exception\MissingHelperException] Helper class EasyuiHelper could not be found.
#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
Я последовал за эту процедуру, чтобы создать плагин:
- Я создал структуру плагина, описанную поваренной в: http://book.cakephp.org/3.0/en/plugins.html#creating-your-own-plugins
Я создал помощник для плагина в
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()){ // ... } }
I добавили следующую строку в конфигурационном/начальной загрузки:
Plugin::load('Easyui');
их в
View/AppView
:public function initialize() { parent::initialize(); $this->loadHelper('Easyui.Easyui'); }
и этот в
Controller/AppController
:public $helpers = ['Easyui.Easyui'];
Я использую помощник в файле макета по умолчанию:
$this->Easyui->linkButton('imgPrint', array('iconCls'=>'icon-print', 'onClick'=>'window.print()'));
Где я ошибся? Я пропустил что-нибудь?
Я забыл упомянуть об этом, но я добавил это также. (Итак, я прочитал целую главу, но спасибо за предложение) – Gubberrr
Вы перестроили автозагрузчик? композитор dumpautoload? Вы можете попробовать отладить автозагрузчик и посмотреть, какие пути он может вызвать для этого пространства имен - если это вообще так. – burzum
После добавления '[' autoload '=> true]' to 'Plugin :: load (' Easyui ');' оно работает. (я рекомендую себе всегда перечитывать главу снова и снова ...) – Gubberrr