0

我有一个名为“任务”的表,“用户”与任务具有多对多关系。

在我显示的页面上:

<input type="checkbox" name="tasks[]" value="task.id"> TaskName

<input type="checkbox"> name="tasks[]" TaskName2

<input type="checkbox"> name="tasks[]" TaskName3

我想知道:在服务器端,如何获取用户选择的复选框数组?

如果我得到集合,那么我可以添加它,使用

User->addTasks(tasks)

4

1 回答 1

1

您似乎没有使用 Symfony 的内置表单功能。我强烈建议调查一下...

使用 Symfony 表单,您可以通过将“扩展”和“多个”选项分别设置为true

// StackOverflow\BulbasaurBundle\Form\TrainerType.php

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;

class TrainerType extends AbstractType
{
    ...
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('name')
            ->add(
                'pokemon',
                'entity',
                array
                (
                    "class" => "BulbasaurBundle:Pokemon",
                    "expanded" => true,
                    "multiple" => true,
                    "property" => "description"
                )
            );
    }

    ...
}

当这个表单被渲染时,它会将每个 Pokemon 实体显示为复选框,使用__toString()方法作为复选框的标签。

使用 Symfony 表单的另一个好处是 Symfony 将管理自动检查哪些框。表单充当实体和请求/视图之间的中介。也就是说,当您请求更改对象时,控制器会根据该对象的当前状态创建一个表单,并将其呈现给用户。相反,当用户提交该数据时,控制器可以将请求信息绑定到实体,然后可以将其持久化。

有关 Symfony2 表单的更多信息,请访问:http: //symfony.com/doc/current/book/forms.html

于 2012-08-10T03:18:44.253 回答