【发布时间】:2014-04-25 08:27:10
【问题描述】:
我将表单用作服务(对于我的表单和“自定义表单类型”也是如此)。 在我的一个表单中,我有两个字段,它们是两个自定义 FormType
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('primary', 'shamp_searchable', [
'class' => '\Udg\CoreBundle\Entity\Ingredients\Ingredient',
'source' => $this->router->generate('adminIngredient_search'),
])
->add('secondaries', 'shamp_searchable', [
'class' => '\Udg\CoreBundle\Entity\Ingredients\Ingredient',
'source' => $this->router->generate('adminIngredient_search'),
'multiple' => true,
])
...
}
由于某种原因,我需要 shamp_searchable 表单类型的两个实例不同
所以在我的service.yml 中,我将范围更改为prototype,我们可以在文档中看到
shamp.form.shamp_searchable_:
class: Shamp\CoreBundle\Form\Type\SearchableOneToManyType
scope: prototype
arguments:
- @shamp.form.shamp_searchable_onetomany.data_transformer
tags:
- { name: form.type, alias: shamp_searchable }
shamp.form.shamp_searchable.data_transformer:
class: Shamp\CoreBundle\Form\DataTransformer\SearchableOneToManyDataTransformer
scope: prototype
arguments:
- @doctrine.orm.entity_manager
但最后它并没有给我两个不同的实例(用spl_object_hash检查)
我的问题是,您知道如何获得不同的实例吗?
【问题讨论】:
标签: php symfony dependency-injection