Php 在symfony2中将$options传递给表单生成器

Php 在symfony2中将$options传递给表单生成器,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我的表单生成器中有此代码 ->add('user', 'entity', array( 'class' => 'Acme\Entity\User', 'query_builder' => function(EntityRepository $er) use ($options) { return $er->createQueryBuilder('u')

我的表单生成器中有此代码

->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

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

现在如果我用这个

$options['test']=1
在生成表单中并使用

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

但是->setParameter('id',$options['my'])不能直接工作。它在表单中的响应与1一样好,所以值在该变量中


我该怎么办?

这是一个常见的类型错误
1
在第一种情况下是字符串,在第二种情况下是int。如果这样做有效,请尝试:

->setParameter('id',intval($options['my']))
虽然您的调试非常好,但最好使用
var\u dump
而不是
echo
。您还可以将这些类型与
gettype()
进行比较

比较
var\u dump($options['my'])
var\u dump($options[test'])


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

对于调试Symfony2应用程序,我非常喜欢ladybundle:希望它能帮助您以后的调试;)向你问好,克里斯托夫