Создание хелпера (Helper) в Zend Framework 3 (невозможно) - PullRequest
0 голосов
/ 13 марта 2019

Я создаю класс в / module / Application / src / View / Helper / Messages

Код:

<?php
namespace Application\View\Helper;
use Zend\View\Helper\AbstractHelper;

class Messages extends AbstractHelper { 
public function __construct() {   
}   
protected function renderErrorMessages($item) {
        echo "!!!";
}

}

Добавьте его в module.config.php Код:

  ....
    'controllers' => [
        'factories' => [
            Controller\IndexController::class => InvokableFactory::class,                       
            Controller\UserController::class => InvokableFactory::class,                       
        ],
    ],
    'view_helpers' => [
            'factories' => [
                View\Helper\Messages::class => InvokableFactory::class,                   
            ],
           'aliases' => [
                'messages' => View\Helper\Messages::class
           ]
        ],                   
    'view_manager' => [
        'display_not_found_reason' => true,
        'display_exceptions'       => true,

На странице login.phtml я вставляю код:

...
<?php echo $this->Messages()->renderErrorMessages(); ?>
...

и получаю в журнале ошибку:

[Ср. 13 12: 18: 30.725622 2019] [php7: error] [pid 9697] [client 127.0.0.1:52914] Неустранимая ошибка PHP: Uncaught Zend \ ServiceManager \ Exception \ ServiceNotFoundException: плагин с именем «Messages» не найден в менеджере плагинов Zend \ View \HelperPluginManager в /var/www/webuseorg4/vendor/zendframework/zend-servicemanager/src/AbstractPluginManager.php:142\nStack trace: \ n # 0 / var / www / webuseorg4 / vendor / zendframework / zend-view / sr/PhpRenderer.php(376): Zend \ ServiceManager \ AbstractPluginManager-> get ('Messages', NULL) \ n # 1 /var/www/webuseorg4/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php (394): Zend \ View \ Renderer \ PhpRenderer-> plugin ('Messages') \ n # 2 /var/www/webuseorg4/module/Application/view/layout/login.phtml(32): Zend \ View \ Renderer \ PhpRenderer -> __call ('Messages', Array) \ n # 3 /var/www/webuseorg4/vendor/zendframework/zend-view/src/Renderer/PhpRenderer.php(506):include ('/ var / www / webuse ...') \ n # 4 /var/www/webuseorg4/vendor/zendframework/zend-view/src/View.php(207): Zend \ View \ Renderer \ PhpRenderer-> render (NULL) \ n # 5 / var / www / webuseorg4 / vendor / zendframework / zend-mvc / src / View / Http / DefaultRenderingStrateg в / var / www / webuseorg4 / vendor / zendframework / zend-servicemanager / src / AbstractPluginManager.php в строке 142, реферер: http://127.0.0.128/user/login 1

Что мне делать не так?

1 Ответ

0 голосов
/ 15 марта 2019

Обновление конфигурации помощника вида с полным именем класса.

'view_helpers' => [
                'factories' => [
                    Application\View\Helper\Messages::class => InvokableFactory::class,                   
                ],
               'aliases' => [
                    'messages' => Application\View\Helper\Messages::class
               ]
            ],    

И на странице login.phtml:

<?php echo $this->messages()->renderErrorMessages($item); ?>

...

...