我想从表单中获取默认值。例如,我使用以下代码呈现了一个选择框形式:
$form = $this->createFormBuilder()
->add('patient', 'choice', array(
'choices' => $patientArray,
'required' => true,
'label' => false
))
->getForm();
patientArray
值由patient_id
和patient_name
组成:
array(
'2' => 'John'
'3' => 'Jane'
);
所以,我希望得到默认值2 => John
而不提交按钮而不选择选择表单。在控制器中实现此目的的正确方法是什么?
答案 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文档
中找到更多示例