在表单中显示findAll()结果

时间:2015-06-08 23:54:42

标签: symfony twig

我正在创建一个处理标签的应用程序(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 %}  

我该怎么办?

1 个答案:

答案 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

进行操作