Symfony2:如何从Controller中的表单中获取默认值?

时间:2014-02-21 15:43:44

标签: php forms symfony

我想从表单中获取默认值。例如,我使用以下代码呈现了一个选择框形式:

$form = $this->createFormBuilder()
            ->add('patient', 'choice', array(
                'choices' => $patientArray,
                'required' => true,
                'label' => false
            ))
            ->getForm();

patientArray值由patient_idpatient_name组成:

array(
    '2' => 'John'
    '3' => 'Jane'
);

所以,我希望得到默认值2 => John而不提交按钮而不选择选择表单。在控制器中实现此目的的正确方法是什么?

1 个答案:

答案 0 :(得分:-2)

您需要在entity中设置默认值。您可以使用__construct()方法。

    // create a task and give it some dummy data for this example
    $task = new Task();
    $task->setTask('Write a blog post');
    $task->setDueDate(new \DateTime('tomorrow'));

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

    return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
        'form' => $form->createView(),
    ));

在此示例中,task字段默认值为Write a blog post。您也可以在__construct()中执行此操作,并且不需要使用setter,但这不是必需的。

但最好使用__construct代替setter,如:

// src/Acme/TaskBundle/Entity/Task.php
namespace Acme\TaskBundle\Entity;

class Task
{
    protected $task;

    protected $dueDate;

    public function __construct() {
        $this->task = 'Write a blog post';
    }

并且在创建Task对象

时始终具有默认值

P.S。您可以在forms文档

中找到更多示例