2017-02-10 88 views
1

您好我正在用Symfony 3開發兩個應用程序,兩者都有同樣的問題,我想用render(controller())將搜索表單集成到樹枝中,問題是重定向到結果頁給我這個錯誤當在樹枝中渲染控制器時的重定向SYMFONY 302

渲染模板期間拋出異常(「呈現」http://localhost/project/web/app_dev.php/index「(狀態碼是302)」時出現錯誤。「)。

這是我的控制器

class ProductController extends Controller 
 
{ 
 

 
    public function resultsAction($criteria){ 
 
    \t $em=$this->getDoctrine()->getManager(); 
 
    \t $listProducts = $em->getRepository('ProjectProductBundle:Product')->getListBy($criteria); 
 
    \t return $this->render('ProjectFrontBundle:Front:results.html.twig', array('listProducts'=>$listProducts)); 
 
    } 
 

 
    public function SearchByNameAction(Request $request){ 
 
     $product = new Product(); 
 
     $form=$this->get('form.factory')->create(ProductType::class,$product); 
 
     if($request->isMethod('post') && $form->handleRequest($request)->isValid()){ 
 
      $em=$this->getDoctrine()->getManager(); 
 
      $criteria = $form["name"]->getData(); 
 
      
 
      return $this->redirectToRoute('project_product_results', array('criteria'=>$criteria)); 
 
     } 
 

 
     return $this->render('ProductFrontBundle:Front:search.html.twig',array('form'=>$form->createView())); 
 
    } 
 
}

這是我在倉庫功能

class ProductRepository extends \Doctrine\ORM\EntityRepository 
 
{ 
 
\t public function getListBy($criteria) 
 
{ 
 
    $qb = $this->createQueryBuilder('p') 
 
    ->where('p.name LIKE :criteria') 
 
    ->setParameter('criteria', '%'.$criteria.'%'); 
 
    
 
return $qb->getQuery()->getResult(); 
 
} 
 

 

 
}

這是我的看法TWI摹

<div> 
 
    {% block search_body %} 
 
{{ render(controller('ProductProductBundle:Product:SearchByName',{'request': app.request,})) }} 
 
{% endblock %} 
 
    </div>

這是我需要你的幫助樹枝resultss頁

<ul> 
 
\t {% for product in listProducts %} 
 
<li>{{ product.name }}</li> 
 
{% endfor %} 
 
</ul>

的觀點我怎樣才能解決這個問題?

+1

很顯然,你不能從嵌入式控制器重定向。可能的重複[Symfony 2:302 http狀態和異常](http://stackoverflow.com/questions/26042633/symfony-2-302-http-status-and-exception) – mickdev

+1

請爲此操作添加您的路由配置。 – Cone

回答

0

你的錯誤在這裏。 參數中的逗號太多。一般來說,不需要在參數中指定請求,通過請求$請求的原型可以隱式恢復請求。

<div> 
    {% block search_body %} 
     {{ render(controller('ProductProductBundle:Product:SearchByName')) }} 
    {% endblock %} 
</div> 

不要忘了使用添加到控制器的頂部:

use Symfony\Component\HttpFoundation\Request; 
相關問題