2014-12-28 45 views
1

我有這樣的細枝代碼:通過樹枝路徑傳遞多個參數

<div style="padding-left: 5em" class="comment"> 
    <p>{{ comment.author.name }} - {{ comment.created|date('j. n. Y H:i') }}</p> 
    <p>{{ comment.text }}</p> 
    <p><a href="{{ path('comment_response_new', {'id': post.id, 'idc': comment.id}) }}">Odpovědět na komentář</a></p> 

    {% for child in comment.children %} 
     {% include 'BlogApplicationBundle:Post:_comment.html.twig' with {'comment' : child}%} 
    {% endfor %} 

</div> 

,這是函數處理來自鏈接在樹枝代碼的輸出:

/** 
    * @Route("/post/{id}/newcommentresponse", name="comment_response_new") 
    * @Template("BlogApplicationBundle:Post:form.html.twig") 
    */ 
    public function commentResponceAction($id,$idc) 
    { 
     $comment = new Comment(); 
     $form = $this->createForm(new CommentType(), $comment); 

     return array(
      'form' => $form->createView() 
     ); 
} 

當我嘗試運行代碼,我得到這個錯誤:

控制器「Cvut \ Fit \ BiWt1 \ Blog \ ApplicationBundle \ Controller \ CommentController :: commentResponceAction()」 ,您所提供的「$ IDC」參數的值(因爲 沒有默認值,或因爲有這一個接一個非可選參數 )。

因此,似乎通過鏈接傳遞的第二個參數被忽略,我不知道我做錯了什麼。

回答

2

你缺少你@Route註釋的$idc定義。它應該是這個樣子:

@Route("/post/{id}/newcommentresponse/{idc}", name="comment_response_new") 

或本:

@Route("/post/{id}/{idc}/newcommentresponse", name="comment_response_new") 

你也可以離開它的路線和函數聲明,並直接從控制器抓住它:

/** 
* @Route("/post/{id}/newcommentresponse", name="comment_response_new") 
* @Template("BlogApplicationBundle:Post:form.html.twig") 
*/ 
public function commentResponceAction($id) 
{ 
    $idc = $request->query->get('idc');