[英]using doctrine's dbal in symfony2 with forms
因此,我想执行以下操作:
我在/Form/Type/UserType.php创建了一个表单类
我有一张带有状态列表的表(名为“ states”的表)。
我想在下拉菜单中显示所有这些状态。
我应该在UserType类中使用什么代码来显示所有状态?
我试过了:
$request = new Request;
$conn = $request->get('database_connection');
$states = $conn->fetchAll('SELECT state_code, state_name FROM states');
$builder->add('state', 'choice', array(
'choices' => $states,
'required' => false,
));
但这给了我一个错误。 基本上,我想从表状态查询所有状态,并从所有这些状态创建一个下拉菜单。
您可以创建State
实体,将其映射到states
表,并与User
实体创建OneToMany
关系。 然后在您的UserType
表单中, $builder->add('state')
应该自动创建下拉字段。 您还必须在UserType
表单的getDefaultOptions
方法中将data_class
选项设置为您的User
实体。
@ m2mdas为您提供了正确的基于对象的答案。 但是,如果您真正想要做的只是存储state_code,那么您所拥有的几乎就可以了。 您只需要正确连接即可。
class MyType extends extends AbstractType
{
public function __construct($em) { $this->em = $em; }
public function buildForm(FormBuilder $builder, array $options)
{
$conn = $this->em->getConnection();
$statesx = $conn->fetchAll('SELECT state_code, state_name FROM states');
// Need to index for the choice
$states = array();
foreach($statesx as $state)
{
$states[$state['state_code']] = $state['state_name'];
}
$builder->add('state', 'choice', array(
'choices' => $states,
'required' => false,
));
...
// In your controller
$form = new MyType($this->getDoctrine()->getEntityManager());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.