如何构建未链接到symfony2中的任何实体的通用表单

时间:2012-08-09 03:08:03

标签: php symfony twig

到目前为止,我只构建了与使用formbuilder的实体相关的表单

我通常这样做

$builder->add("tasks")

然后我这样做

$Form = $this->createForm(new TaskType(), $entity);

现在我只想要一个通用表单,其中我有可以从数据库加载实体的选择框。

我不是持久化或绑定那种形式我只是想当用户选择用户并点击提交然后我转到该用户页面

在上面的表格中,我曾经将任务作为用户实体的属性,因此我使用了add。

但我只想要显示任务,这与用户无关,我可以这样做

$form = $this->createFormBuilder($task)
        ->add('task', 'text')
        ->add('dueDate', 'date')
        ->getForm();

上面的代码示例我可以这样做

$form = $this->createFormBuilder()
        ->add('task', 'text')
        ->add('dueDate', 'date')
        ->getForm();

1 个答案:

答案 0 :(得分:1)

在阅读之前,为什么要显示<select>什么都不做?也许有更好的解决方案来实现你想要的东西:)

无论如何,如果您的表单中有一些与实体属性无关的字段,只需将选项property_path设置为false即可。假设您要显示<select>任务,我会这样做:

$this->createFormBuilder()
    ->add('task', 'entity', array(
        'property_path' => false,
        'class'         => 'Acme\HelloBundle\Entity\Task', // Full/short FQCN
        'property'      => 'name', // Assuming your task as a property "name",
    ))
;

如果由于某种原因你需要选择的值(平均选择的Task对象),你可以在将$form->get('task')->getData()与请求绑定后使用{{1}}。