Насколько я понимаю, вы должны использовать диспетчер экземпляра FormBuilder
для всех событий формы. *.
use Acme\DemoBundle\Form\EventListener\MyListener;
function buildForm(FormBuilder $builder, array $options)
{
$listener = new MyListener();
$builder
->addEventListener('event', array($listener, 'method'), priority);
}
Я использовал addEventListener
, поскольку в записи поваренной книги упоминается только addEventSubscriber
.
Если вам нужно добавить событие для всех форм, вы можете создать расширение:
<?php
namespace Acme\DemoBundle\Form\Extension;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\FormEvents;
use Acme\DemoBundle\Form\EventListener\MyListener;
class FormTypeMyExtension extends AbstractTypeExtension
{
public function getExtendedType()
{
return 'form';
}
public function buildForm(FormBuilder $builder, array $options)
{
$listener = new MyListener();
$builder->addEventListener('event', array($listener, 'method'));
}
}
И зарегистрируйте добавочный номер как услугу:
services:
acme_demo.form.extension.myextension:
class: Acme\DemoBundle\Form\Extension\MyExtension
tags:
- { name: form.type_extension, alias: form }
Подробнее см. Symfony API .