将$ options传递给symfony2中的表单构建器

时间:2012-08-23 06:36:37

标签: php symfony doctrine-orm

我在表单构建器中有这段代码

->add('user', 'entity', array(
                'class' => 'Acme\Entity\User',
                'query_builder' => function(EntityRepository $er) use ($options) {
                        return $er->createQueryBuilder('u') 
                        ->where('u.id = :id')
                        ->setParameter('id',$options['my'])
                        ->orderBy('u.name', 'ASC');},))

当我回显$options['my']时,我在构建器中得到1的输出。 现在,当我提交表单时,我得到NULL作为User对象。

但是,如果我使用->setParameter('id',1),那么它可以正常工作。

现在如果我使用这个

在构建表单中

$options['test'] = 1并使用

->setParameter('id',$options['test'])然后它也可以正常工作。

但是 - > setParameter('id',$ options ['my'])无法直接使用。它在表单中回显为1,因此值在该变量中。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

这是类型的常见错误。 1在第一种情况下是字符串,在第二种情况下是 int 。试试这是否有效:

->setParameter('id',intval($options['my']))

您的调试确实很好,但最好使用var_dump而不是echo。您还可以将这些类型与gettype()进行比较。

var_dump($options['my'])var_dump($options[test'])进行比较。

gettype($options['my'])gettype($options['test'])进行比较。