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フォームを送信すると、User オブジェクトとして NULL が返されます。

しかし、私が使用する ->setParameter('id',1)と、うまく機能します。

今これを使えば

$options['test'] = 1ビルドフォーム内で使用

->setParameter('id',$options['test'])その後も正常に動作します。

しかし、 ->setParameter('id',$options['my']) は直接動作しません。フォームで 1 として正常にエコーされているため、値はその変数にあります。

私は何をすべきか?

4

1 に答える 1

1

タイプの一般的なエラーです。最初のケースでは1文字列、2 番目のケースではintです。これが機能するかどうか試してください:

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

あなたのデバッグは本当に良いですが、var_dumpよりもむしろ使用する方が良いですecho. で種類を比較することもできますgettype()

と比較var_dump($options['my'])してくださいvar_dump($options[test'])

と比較gettype($options['my'])してくださいgettype($options['test'])

于 2012-08-23T09:47:34.417 に答える