Zend framework2 Zend Framework 2,事件管理器,SharedManager,表单初始化
我已将事件添加到onBootstrap()中Zend framework2 Zend Framework 2,事件管理器,SharedManager,表单初始化,zend-framework2,Zend Framework2,我已将事件添加到onBootstrap()中 $e->getApplication()->getEventManager()->getSharedManager()->attach('\Application\Form\Presentation\Edit',init',function($e){ 退出(打印(“”).var_转储($e)); }, 1); 如何在调用form method init后运行此事件?我有一个解决方案 在onBootstrap()中 形式: $event = new
$e->getApplication()->getEventManager()->getSharedManager()->attach('\Application\Form\Presentation\Edit',init',function($e){
退出(打印(“”).var_转储($e));
}, 1);
如何在调用form method init后运行此事件?我有一个解决方案
在onBootstrap()中
形式:
$event = new EventManager('PresentationEdit');
$event->trigger('init', $this);
在init方法中:
它可以工作,但这是正确的方法吗?是的,这是一种正确的方法,但我建议您在简单的任务上使用事件,如
updatePost
,removePost
或其他。不要用事件风暴淹没应用程序—这会降低应用程序的整体可读性
$services = $e->getApplication()->getServiceManager();
$sharedEventManager = $e->getApplication()->getEventManager()->getSharedManager();
$sharedEventManager->attach('PresentationEdit','init', function($event) use ($services) {
$form = $event->getTarget();
$form->add(array(
'type' => '\Zend\Form\Element\Text',
'name' => 'title2',
'attributes' => array(
'type' => 'text',
'class' => 'form-control',
'autocomplete' => 'off',
),
'options' => array(
'label' => 'presentation.title',
)
));
}, 100);
use Zend\EventManager\EventManager;
$event = new EventManager('PresentationEdit');
$event->trigger('init', $this);