Как передать пользовательские параметры в форму Symfony

Я должен передать настраиваемую опцию в форму symfony. Я выполнил настройку документации поэтапно, но мои параметры не пройдут.

Тип формы

class AdvertType extends AbstractType { /** * {@inheritDoc} */ public function buildForm(FormBuilderInterface $builder, array $options) { $entityManager = $options['em']; } /** * {@inheritDoc} */ public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setRequired(array( 'em', )); $resolver->setAllowedTypes(array( 'em' => 'Doctrine\Common\Persistence\ObjectManager', )); } /** * {@inheritDoc} */ public function getName() { return 'advert'; } } 

Вот код от контроллера.

 $form = $this->createForm(new AdvertType(), new Advert(), array( 'em' => $this->getDoctrine()->getManager(), )); 

Symfony выдаст исключение, которое отсутствует в моей опции.

Исключение: отсутствует требуемый параметр «em».

Я последовал за учебником, чтобы добавить трансформаторы данных: http://symfony.com/doc/current/cookbook/form/data_transformers.html

Я очистил кеш и перезапустил свой веб-сервер, но ничего не получится. Что я не так? Я пропустил конфигурацию, чтобы передать свои $options ? Похоже, что массив $options из контроллера, который я передал, никогда не достигнет метода buildForm .

Я использую Symfony v2.3.5. Для тестирования я обновлялся до последней версии (2.3.6), но проблема все еще существует.

Приветствия.

Я скопировал ваш код и успешно использовал его (Symfony 2.3.6). Это сработало! Вам не нужно очищать кеш. Поэтому я не уверен, что случилось. Вы также должны рассмотреть возможность добавления параметра data_class в свой преобразователь, если вы хотите ограничить форму для своего объекта data_class , например

  $resolver ->setDefaults(array( 'data_class' => 'Your\Bundle\Entity\Advert', )) ; 

Я использовал свою форму дважды (по-разному), поэтому ошибка возникает из-за неправильного использования. Я искал неправильное место для ошибки. Код в целом правильный. Простите за это.