我正在尝试使用symfony2构建一个非常简单的应用程序。
我已经使用HWI Oauth2安装和配置了FOS UserBundle。
它工作正常,但我想修改注册表单,以便它有一个下拉列表,其中包含来自我的数据库的数据,这些数据是由学说提取的。
我没有在Symfony doc上找到任何东西。
有人可以提出建议吗?
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('email', 'email', array('label' => 'form.email', 'translation_domain' => 'FOSUserBundle'))
->add('username', null, array('label' => 'form.username', 'translation_domain' => 'FOSUserBundle'))
**/**** This Works and give a dropdownlist but i want to get this list from database instead of hard coded data how can I achieve that ? *****/**
->add('status_type', 'choice', array(
'choices' => array(
'' => 'Please Select...',
'developper' => 'Android Developper',
'architect' => 'Android or Mobile Architect',
'mobile' => 'Mobile Developper',
'web and mobile' => 'Web and Mobile Developper',
)))
->add('plainPassword', 'repeated', array(
'attr' => array('class' => 'form-control'),
'type' => 'password',
'options' => array('translation_domain' => 'FOSUserBundle'),
'first_options' => array('label' => 'form.password'),
'second_options' => array('label' => 'form.password_confirmation'),
'invalid_message' => 'fos_user.password.mismatch',
))
;
}
答案 0 :(得分:1)
这是一个示例代码;
$builder->add('status_type', 'entity', array(
'class' => 'AcmeDemoBundle:Status',
'property' => 'status_name',
));
或者如果您需要自定义查询:(您需要调整架构的查询)
$builder->add('status_type',
'entity',
array(
'class'=>'AcmeDemoBundle:Status',
'property'=>'status_name',
'query_builder' => function ($repository)
{
return $repository->createQueryBuilder('s')
->where('s.status_type = ?1')
->setParameter(1, 'basic')
->add('orderBy', 's.sort_order ASC');
}
)
);
有关详细信息,请参阅http://symfony.com/it/doc/current/reference/forms/types/entity.html
上的相关文档