我希望以特殊方式显示表单选项(单选按钮)。
简短说明:
我需要在选择小部件中显示实体的许多属性,而不仅仅是名称(_toString)和值(id)。
夸张的解释:
我不会浪费时间解释我的实体,因为它们工作正常,我对它们没有任何问题。
我有一个 SalonWeb实体,与相册实体有 OneToOne关系。此外,相册实体与 Foto Entity 具有 OneToMany关系,并包含$ fotos ArrayCollection和$ foto_principal属性,该属性链接$ foto_id。
因此,通过适当的学说查询,我可以访问以下内容:
$salon_web->getAlbum()->getFotoPrincipal();
或者,在TWIG:
salonWeb.album.fotoPrincipal
到目前为止,一切都是正确的。
我想将此照片(英文照片)显示为表单选择标签,因此我执行此代码(正在运行)
在表单构建器中:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('salones', 'entity', array(
'class' => 'CommonBundle:SalonWeb',
'required' => true,
'expanded' => true,
'query_builder' => function(EntityRepository $er)
{
return $er->getQueryBuilderVisiblesContacto();
},
'property' => 'album.foto_principal'
))
// More code...
}
......在TWIG模板中:
<div>
{{ form_errors(formulario.salones) }}
{{ form_label(formulario.salones) }}
{% for childSalon in formulario.salones %}
<label><img src="/uploads/galeria/{{ childSalon.vars.label }}" alt="" />{{ form_widget(childSalon) }}</label>
{% endfor %}
</div>
{{ form_widget(formulario) }}
直到这里,所有工作都很好。但问题是我只能在表单选项中显示单个属性(在本例中是SalonWeb实体的album.foto_principal属性)
我想展示这样的东西:
<div>
{{ form_errors(formulario.salones) }}
{{ form_label(formulario.salones) }}
{% for childSalon in formulario.salones %}
<label><img src="/uploads/galeria/{{ childSalon.whatever.name }}" alt="" />{{ childSalon.whatever.address ~ ' ' ~ childSalon.whatever.anotherSalonWebProperty }}
<div>{{ childSalon.whatever.theLastProperty }}</div>
{{ form_widget(childSalon) }}</label>
{% endfor %}
</div>
{{ form_widget(formulario) }}
答案 0 :(得分:2)
最后,我找到了一种方法,受到这篇文章解决方案的启发:
Symfony 2 Create a entity form field with 2 properties
向我的SalonWeb实体添加方法:
//...
public function getFormChoiceImageAndLabelProperties()
{
return array(
'image_src' => $this->getAlbum()->getFotoPrincipal(),
'label' => $this->getDireccionParcial(),
'another_property' => $this->getWhatever(),
);
}
从
更改我的表单构建器选择属性'property' => 'album.foto_principal'
到
'property' => 'form_choice_image_and_label_properties'
......在TWIG模板中:
<div>
{{ form_errors(formulario.salones) }}
{{ form_label(formulario.salones) }}
{% for childSalon in formulario.salones %}
<label>
<img src="/uploads/galeria/{{ childSalon.vars.label['image_src'] }}" alt="{{ childSalon.vars.label['label'] }}" />
<div>
<span>{{ childSalon.vars.label['label'] }}</span>
</div>
<div>
<span>{{ childSalon.vars.label['another_property'] }}</span>
</div>
{{ form_widget(childSalon) }}
</label>
{% endfor %}
</div>
{{ form_widget(formulario) }}
{{ form_widget(formulario) }}