Symfony2带有复选框形式的Expaned表

时间:2015-11-11 07:07:28

标签: php forms symfony checkbox twig

我有一个表格,其中包含“ID”,“类别”,“名称”和“行动”等信息。现在我想用复选框改进表格,使用户可以选择多行并一步删除它们。

我的问题:我使用表单构建器创建了一个表单:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('id', 'entity', array(
                'required'  => false,
                'class'    => 'AppBundle:Task',
                'property' => 'id',
                'multiple' => true,
                'expanded' => true
            ))
            ->add('add', 'submit', array('label' => 'Add'));
    }

此表单将发送到twig-html,其中包含表格的数据。

{% if table|length > 0 %}
        {{ form_start(addForm) }}
        {{ form_errors(addForm) }}
        <table class='result' border=1>
            <th></th>
            <th>ID</th>
            <th>Category</th>
            <th>Name</th>
            <th>Action</th>
            {% for item in table %}
                <tr>
                    <td>
                    {% for entity in addForm.id %}
                        {% if entity.vars.value == item.id %}
                            {{ form_widget(entity.vars.form) }}
                        {% endif %}
                    {% endfor %}
                    </td>
                    <td>{{ item.id }}</td>
                    <td>{{ item.category }}</td>
                    <td>{{ item.name }}</td>
                    <td>{{ item.action }}</td>
                </tr>
            {% endfor %}
        </table>

正如您所看到的,我的解决方案必须在for循环中搜索表单项的正确ID并放置它们。

我现在的问题:我对此解决方案感到不舒服 - 是否有更简单的方法来显示包含多个列和复选框的表格?

提前致谢

编辑:

还有一个问题是我在选择一些复选框后出现以下错误:

Neither the property "id" nor one of the methods "addId()"/"removeId()", "setId()", "id()", "__set()" or "__call()" exist and have public access in class "AppBundle\Entity\XXXXXX".

1 个答案:

答案 0 :(得分:0)

也许您应该更好地使用collection form type而不是实体类型,因为您将能够为数据库表的每个记录使用自定义表单和twig模板。在此explanation中,您将学习如何删除或添加一行。添加复选框以提供批处理操作将是一个额外的JavaScript解决方案