在Zend Framework 3中创建帮助程序(Helper)(不可能)

问题描述 投票:-1回答:1

我在/ 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(); ?>
...

并获取日志错误:

[Wed Mar 13 12:18:30.725622 2019] [php7:error] [pid 9697] [client 127.0.0.1:52914] PHP致命错误:未捕获的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/src/Renderer/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 \在/ var / www / webuseorg4 / vendor / zendframework / zend中查看\ Renderer \ PhpRenderer-> render(NULL)\ n#5 / var / www / webuseorg4 / vendor / zendframework / zend-mvc / src / View / Http / DefaultRenderingStrateg第142行的-servicemanager / src / AbstractPluginManager.php,referer:http://127.0.0.128/user/login 1

我怎么办不是这样?

zend-framework3
1个回答
0
投票

使用完全限定的类名更新view-helper配置。

'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); ?>

...

© www.soinside.com 2019 - 2024. All rights reserved.