2015-06-24 4 views
0

Возможно ли получить новый экземпляр помощника представления ZF2, формы и т.п. для каждого вызова?Получить новые экземпляры ZF2 ViewHelper/Form/etc

Моей главной проблемой на данный момент является справка с помощниками. Каждый раз, когда я вызываю помощника, мне нужно, чтобы он был сконструирован так, как нужно, чтобы в него были добавлены новые объекты, но неважно, какой конфигурацией у меня он когда-либо только проходит через фабрику один раз. Таким образом, объекты, созданные на заводе, одинаковы для каждого экземпляра, чего я не хочу.

Я пробовал различные конфигурации, такие как установка помощника вида как общего, но это не помогло.

Это моя конфигурация, как она сейчас стоит;

/** 
* 
*/ 
'view_helpers' => array(
    'shared' => array(
     'notes' => false, 
     ), 
    'factories' => array(
     'notes' => __NAMESPACE__ . '\Factory\ViewHelper\Notes', 
     'note' => __NAMESPACE__ . '\Factory\ViewHelper\Note', 
     ) 
    ), 

Любая помощь будет замечательной!

+0

Поскольку вы упомянули об этом в вопросе, вы можете воспользоваться своими помощниками в качестве помощников вида, например, помощниками формы, которые сами сохраняют состояние? Если это так, вам, вероятно, нужно будет добавить все их в массив 'shared', а также ваш пользовательский помощник вида. – Crisp

ответ

1

Вы почти у цели.

Ключ конфигурации shared должен отмечать службы, требующие создания нового экземпляра каждый раз, когда вы их запрашиваете.

Проблема, однако, заключается в том, что вам необходимо использовать услугу имя.

'view_helpers' => [ 
    'shared' => [ 
     'notes' => false, 
    ], 
    'factories' => [ 
     'notes' => __NAMESPACE__ . '\Factory\ViewHelper\Notes', 
    ], 
], 
+0

Извините, мой плохой. Я играл с конфигом и просто копировал и вставлял то, что там без проверки. Предполагаемая конфигурация - это то, что вы пытались. – L4DD13

+0

Это работает для меня. Проблема может быть связана с фабрикой или помощником «примечаний». Обновите свой вопрос. – AlexP

+0

Также проверьте, что вы фактически определили пространство имен в верхней части 'module.config.php' (например,' namespace MyModule; '). – AlexP

Смежные вопросы