我正在创建一个处理标签的应用程序(3个字段:名称,描述和颜色),我想创建一个带有表单的模板来添加/编辑/删除这些标签。
我在互联网上找到了关于多对一嵌入式表格的多个答案但是在这里,我没有外键,我的实体是孤立的。我正在考虑制作一个循环来在我的控制器中创建我的n
表单,但这听起来很丑陋且没有优化。
我目前只有一个表单:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('description', 'textarea')
->add('color', 'text')
->add('save', 'submit');
}
现在的树枝:
{% for thirdPartyTypeForm in thirdPartyTypeForms %}
<div class="col-sm-12">
{{ form_start(thirdPartyTypeForm, {'attr': {'class': 'form-horizontal realForm'}}) }}
{{ form_errors(thirdPartyTypeForm) }}
<div class="row">
<div class="form-group">
{{ form_label(thirdPartyTypeForm.name, "Type :", {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
{{ form_widget(thirdPartyTypeForm.name, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="form-group">
{{ form_label(thirdPartyTypeForm.description, "Description :", {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
{{ form_widget(thirdPartyTypeForm.description, {'attr': {'class': 'form-control'}}) }}
</div>
<div class="form-group">
{{ form_label(thirdPartyTypeForm.color, "Couleur :", {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
{{ form_widget(thirdPartyTypeForm.color, {'attr': {'class': 'form-control'}}) }}
</div>
{{ form_widget(thirdPartyTypeForm.save, {'attr': {'class': 'btn btn-primary'}, 'label': 'Modifier'}) }}
{{ form_rest(thirdPartyTypeForm) }}
{{ form_end(thirdPartyTypeForm) }}
</div>
</div>
{% endfor %}
我该怎么办?
答案 0 :(得分:0)
您可以使用不带父表单的表单类的formbuilder,其中包含您为集合字段创建的TagType。
E.g。 TagType
<style>
.ui-datatable-frozenlayout-right .ui-datatable-empty-message td
{
display: none;
//or visibility:hidden;
}
</style>
E.g。表格(在控制器方法中)
class TagType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('description', 'textarea')
->add('color', 'text')
->add('save', 'submit');
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'YourNamespace\YourBundle\Entity\YourTagEntity',
));
}
public function getName()
{
return 'tag';
}
}
然后只需使用$ form-&gt; createView()在视图中正常使用该表单。我没有经过测试,但我相信这种方法应该可行。
如果您需要动态添加/删除元素,可以按照documentation
进行操作