2016-06-14 12 views
1

私は私のコントローラで2つのアクション機能を持っていると私は他のアクション機能Symfonyのコントローラから別の変数に変数を渡しますか?

これは私のコントローラの私の最初の関数であるに変数を渡したい私のコントローラで

public function newUserAction(Request $request) 
{ ......... 
$url = $this->generateUrl('userBundle_new_user_reasonCodeAjaxView', 
array('id' => $newUser->getCode(), 
      'countCode' => $countCode,)); 
      return $this->redirect($url); 

この私の第二目的球

 public function userCodeAjaxViewAction(Request $request, $id) 
{ 

    $em = $this->getDoctrine()->getManager(); 
    $pc = $em->getRepository('UserBundle:Code')->find($id); 

    if($pc != null) 
    { 
     return $this->render('UserBundle:userCodeView.html.twig', array(
     'pc' => $pc, 

     )); 
    } 
そして、私のTWIFこの

<div class=""> 
    <div class="panel panel-default step3-textarea top-arrow top-arrow"> 
     <div class="panel-body"> 
      <fieldset> 
       <div> 
        {{ pc.name|trans }} 

    {{countCode}} 

       </div> 
      </fieldset> 

     </div> 
    </div> 
</div> 
のように見えます210

エラーが発生しましたVariable "countCode" does not exist in...

他のコントローラのコントローラの変数をどのように使用できますか?

答えて

0

他のコントローラから変数を取得することはできません。
すべての要求はコントローラインスタンスを1つだけ作成します。

あなたができることは、コントローラで呼び出すことのできるサービスを作成することです。そのような
何か:

class CountUserService{ 
    public function count(){ 
     return 1; // count users here 
    } 
} 

とコントローラでこれを行うには:

$service = new CountUserService(); 
$data=['countCode' => $service->count()]; 
return $this->render('UserBundle:userCodeView.html.twig', $data); 
0

2つのコントローラで同じテンプレートスコープを使用していますが、これは不可能です。 2つのコントローラを使用して2つの簡単な情報をレンダリングする場合は、単にJSONを返し、AJAXを使用してよりグローバルなテンプレートで表示するだけではいかがですか?

エルス

純粋なsymfonyのソリューションは、あなたが、あなたの2つのコントローラのアクションのテンプレートはシンプル{{ pc.name|trans }}{{countCode}}だろうことを考えると

<div class=""> 
<div class="panel panel-default step3-textarea top-arrow top-arrow"> 
    <div class="panel-body"> 
     <fieldset> 
      <div> 
       {{ render(controller("AppBundle:UserController:newUserAction")) }} 

       {{ render(controller("AppBundle:UserController:userCodeAjaxViewAction")) }} 

      </div> 
     </fieldset> 

    </div> 
</div> 

を置くメインテンプレートview.html.twigを持っていることであろう。

あなたのお役に立てば幸いです!

+0

またhttp://twig.sensiolabs.org/doc/functions/index.html解決するために作ることができますこの ! –

関連する問題