1

到目前为止,我只使用 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();
4

1 回答 1

1

在阅读之前,你为什么要显示一个<select>无所事事?也许有更好的解决方案来实现你想要的:)

无论如何,如果您的表单有一些与实体属性无关的字段,只需将选项设置property_pathfalse. 假设您想显示<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()在将其与请求绑定后获得。

于 2012-08-09T09:08:37.677 回答