2016-08-02 8 views
0

symfony 2.8の新機能です。Symfonyの集中コード

public function someMethod(Request $request){ 
    //1) instanciate entity manager 
    $em = $this->getDoctrine()->getManager(); 

    //2) Fetch some datas .. 
    $datas = $em->getRepository('MyCustomBundle:Entity')->findAll(); 
    $otherDatas = $em->getRepository('MyCustomBundle:AnotherEntity')->findAll(); 

    //3) Inject datas into view 
    return $this->render('MyCustomBundle:Views:myview.html.twig', array('data'=>$datas,'otherDatas'=>$otherDatas)); 
    } 

分離されたクラスに、すべてのgetRepositoriesコールと配列の注射を因数分解することが可能です: 私は、このパターン以下、異なるビューに入れて、同じデータを取得するために私のコントローラのそれぞれに同一のコードパターンを行います?

助けてくれてありがとうございます。

+0

依存関係注入とサービスhttp://symfony.com/doc/current/service_container.htmlに精通してください。リポジトリをサービスとして定義し、$ this-> get( 'my.repository') - > findAll()を使用します。次に、あなたのコントローラをサービスとして定義して、getが消えてしまうことも考えてみましょう。他にも多くのことができます。 – Cerad

答えて

0

私はSymfony-wayがあるとは思っていません。私は2)を好むだろう)とあなたのコードをリポジトリに入れ、ちょうどいくつかのゲッタをコントローラに入れてください。

  1. 継承元の抽象コントローラクラスを作成します。
  2. 私はいくつかの冗長なコードでそれをやるでしょう。リポジトリゲッターをメソッドに入れます。クリーンだが冗長。複雑なDB-Handlingがある場合は、コードを履歴に入れてください。
  3. コードを使用してサービスを構築し、それをコントローラサービスに関連付けます。 Take a look here
  4. コードを形質に置きます。
関連する問題