2016-05-26 12 views
-1

フォーム型クラスでDoctrineを使用しようとしています。symfonyのフォームタイプでdoctrineリポジトリを取得するには?

Attempted to call an undefined method named "getDoctrine" ... 

教義呼び出すことがとにかくあり:ここで

はコード

class UserType extends AbstractType { 

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 


$userRepository= $this->getDoctrine()->getRepository('UserBundle:User'); 
$user = $userRepository->findOneByName('Sara'); 

    $builder 
     ->setAction($options['data']['url']) 
     ->setMethod('GET') 
     ->add('user', 'text', array(
     'user.id' => $user, 
     'label' => 'User', 
)) 
     ->add('save', 'submit', array('label' => 'SoapServer')) 
      ; 
     } 

私はこのようなエラーを取得していますか?

+3

http://stackoverflow.com/questions/24876767/inject-symfony-entitymanager-into-form-type-via-services – Mattia

+0

なぜあなたはAbstractType'を拡張 '使用していますか?あなたのコードがエンティティを作成しようとしていますか、またはコントローラを作成しようとしましたか?それはあなたの投稿から明らかではありません... –

答えて

-1

私は本当にこの答えを共有することについて恥ずかしい気がしますが、もしあなたが必死なら、このようなものを使うことができます。 この解決法を回避し、グローバル変数を使用しないでを見つけようとしてください。 また、リポジトリvarを$ userRepositoryから$ statusRepositoryに変更したことに注意してください。

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
     global $kernel; 

     if ('AppCache' == get_class($kernel)) 
     { 
      $kernel = $kernel->getKernel(); 
     } 
     $doctrine = $kernel->getContainer()->get('doctrine'); 

     $userRepository=$doctrine->getRepository('UserBundle:User'); 
     $user = $userRepository->findOneByName('Sara'); 
+0

私はちょうど醜い間違った概念の質問に答えるだけです。言語とフレームワークはこれを可能にしますが、良い習慣ではコンセプトの問題があると言います。 なぜこの回答に下降声を指定してください。 – glerendegui

関連する問題