简体   繁体   中英

View helper plugin extending in ZF2

I want to extend, for example, Zend\\View\\Helper\\HeadMeta with my own class and I create a factory for it and call it by

public function getViewHelperConfig()
{
    return array(
        'factories' => array(
            'MyHeadMeta' => __NAMESPACE__ . '\View\Helper\Service\MyHeadMetaService',
        ),
    );
}

from Module.php , but I have

$this->view

is null in MyHeadMeta class if I call it by

$this->MyHeadMeta()->setCharset('utf-8');

in my view file.

How do I instantiate my view helper properly?

UPDATE

My class looks something like this:

MyHeadMeta.php

use Zend\View\Helper\HeadMeta;

class MyHeadMeta extends HeadMeta
{
    //
}

UPDATE 2

MyHeadMetaService.php

class MyHeadMetaService implements FactoryInterface
{
    public function createService(ServiceLocatorInterface $serviceLocator)
    {
        $viewHelper = new MyHeadMeta();
        // some settings to set...
        return $viewHelper;
    }
}

If you only extend the existing HeadMeta class then you should register it as an invokable as is done with the original HeadMeta view helper in the HelperPluginManager .

So change your config like this:

return array(
    'invokables' => array(
        'MyHeadMeta' => 'View\Helper\Service\MyHeadMetaService'
    )
);

By the way I don't think it is necessary to use the full path with __NAMESPACE__ . Just make sure the name points to the correct file and folder path of your class in the current module and declare the namespace constant in the class.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM