2012-08-23 16 views
0

我有這樣的代碼在我的表單生成

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

對於調試Symfony2應用程序,我真的很喜歡LadyBugBundle:https://github.com/raulfraile/LadybugBundle希望它可以幫助您未來的調試;)最好的問候, Christophe – user1041440

回答

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'])