Я хочу расширить, например, Zend\View\Helper\HeadMeta
с моим собственным классом, и я создаю фабрику для него и называю его
public function getViewHelperConfig()
{
return array(
'factories' => array(
'MyHeadMeta' => __NAMESPACE__ . '\View\Helper\Service\MyHeadMetaService',
),
);
}
от Module.php
, но у меня есть
$this->view
является null
в MyHeadMeta
класс, если я назову это
$this->MyHeadMeta()->setCharset('utf-8');
в моем представлении файла.
Как правильно создать экземпляр моего помощника по просмотру?
Мой класс выглядит примерно так:
MyHeadMeta.php
use Zend\View\Helper\HeadMeta;
class MyHeadMeta extends HeadMeta
{
//
}
MyHeadMetaService.php
class MyHeadMetaService implements FactoryInterface
{
public function createService(ServiceLocatorInterface $serviceLocator)
{
$viewHelper = new MyHeadMeta();
// some settings to set...
return $viewHelper;
}
}
Если вы только расширяете существующие HeadMeta
класс, то вы должны зарегистрировать его в качестве вызываемого как это сделано с оригиналом HeadMeta
посмотреть помощник в HelperPluginManager
,
Так что измените ваш конфиг так:
return array(
'invokables' => array(
'MyHeadMeta' => 'View\Helper\Service\MyHeadMetaService'
)
);
Кстати, я не думаю, что необходимо использовать полный путь с __NAMESPACE__
, Просто убедитесь, что имя указывает на правильный путь к файлу и папке вашего класса в текущем модуле и объявите namespace
постоянная в классе.
Других решений пока нет …