您似乎没有使用 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