2017-04-27 4 views
1

私は小枝テンプレートのコントローラを埋め込んだ場合、どのように私は、レンダリングされた埋め込まれたルートに必要なURLパラメータを渡すのですか?URLパラメータをレンダリングされたsymfony3フォームに渡すにはどうすればいいですか?

次の例では、画像はアルバムに属し、アルバムID(複合キーのそれの一部)を必要とするが

<tbody> 
     <tr> 
      <th>Id</th> 
      <td>{{ album.id }}</td> 
     </tr> 
     <tr> 
      <th>Name</th> 
      <td>{{ album.name }}</td> 
     </tr> 
     <tr> 
      {{ render(controller(
       'AppBundle:Image:new', 
       {'album': album} 
      )) }} 
     </tr> 
    </tbody> 

画像:新しいルートは、次の注釈

が付いていますテンプレートをレンダリング

public function newAction(Request $request, $album) 
{ 
    $image = new Image(); 
    $form = $this->createForm(
     'AppBundle\Form\ImageUploadType', 
      $image, 
      [ 
       'action' => $this->generateUrl('image_new'), 
       'method' => 'POST', 
      ] 
    ); 
    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($image); 
     $em->flush(); 

     return $this->redirectToRoute('image_show', array('id' => $image->getId())); 
    } 

    return $this->render('image/new.html.twig', array(
     'image' => $image, 
     'form' => $form->createView(), 
    )); 
} 

を次のように

* @Route("{album}/image") 

方法は、Wそのそのフォームを次のエラーの結果に埋め込んでいます。

テンプレートのレンダリング中に例外がスローされました(ルート "image_new"のURLを生成するためにいくつかの必須パラメータにはアルバムがありません)。

symfony3.2とtwigを使用して組み込みコントローラにURLパラメータを渡す正しい方法は何ですか?

+0

あなたはエラーがコントローラの埋め込みから来ていますか? '' action '=> $ this-> generateUrl(' image_new ')、 '、ここで必須パラメータはありません。埋め込みであるため、レンダリングによって問題は発生しますが、必要ではありません。直接埋め込むことができます。 – Joe

答えて

1

symfonyは投げているエラーは、IDを渡すことについてではなく、URLの建物について。あなたのコードで

、あなたはこの断片持っている:それはされるべきである

$form = $this->createForm(
    'AppBundle\Form\ImageUploadType', 
     $image, 
     [ 
      'action' => $this->generateUrl('image_new'), 
      'method' => 'POST', 
     ] 
); 

を:

$form = $this->createForm(
    'AppBundle\Form\ImageUploadType', 
     $image, 
     [ 
      'action' => $this->generateUrl('image_new',['album'=>$album,]), 
      'method' => 'POST', 
     ] 
); 

だけgenerateUrl方法にアルバムを渡します。

関連する問題