So, I'm building a small form with a choice. However, I want to pre-select some of those options, as if I was applying selected="selected"
. I could not find how can this be done in the docs. Help? :D
问问题
447 次
2 回答
1
要为表单设置默认值,需要在表单的基础数据类中设置这些值。假设底层数据类是一个实体,则可以在构造时在该实体中默认值。如果您不使用实体注释并且不想更改生成的实体类,则可以将默认值设置为实体类的新实例并将其用作表单的数据。
例如,对于具有角色数组和方法 setRoles(array $roles) 的用户实体,可以在用户实体的构造函数中默认角色,如下所示(为清楚起见,使用硬编码字符串):
public function __construct()
{
$this->setRoles(array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR');
}
或者,可以在表单显示之前在控制器中默认角色(没有表单类和硬编码字符串的简单示例):
$allRoles = array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR', 'ROLE_ADMIN', 'ROLE_SUPER_ADMIN');
$user = new User();
$user->setRoles(array('ROLE_USER', 'ROLE_READER', 'ROLE_EDITOR');
$form = $this->createFormBuilder($user)
->add('username', 'text')
->add('roles', 'choice', array('choices' => array_combine($allRoles, $allRoles),
'multiple' => true)
->getForm();
return $this->render('AcmeTaskBundle:Default:new.html.twig', array(
'form' => $form->createView(),
));
于 2012-07-20T08:31:25.243 回答
0
最终比我想象的要简单:
$form['form[selectionMenu]']->select(1);
于 2012-07-26T18:18:03.163 回答