完整的错误消息
:类型错误:传递给Symfony\Bundle\FrameworkBundle\Controller\Controller::render((的参数3必须是Symfony\Component\HttpFoundation\Response的实例,或者为null,给定数组,在C:\examplep\htdocs\tpOne\src\Esprit\ParcBundle\Cntroller\VoitureController.php第41行调用*
list.html.trick
<ul>
{% for marque in marques %}
<li>{{ marque|upper }}</li>
{% else %}
<strong>la liste des marques est vide!</strong>
{% endfor %}
</ul>
路由.yml
esprit_parc_homepage:
path: /
defaults: { _controller: EspritParcBundle:Default:index }
esprit_parc_affichage:
path: //afficher/{marque}
defaults: { _controller: EspritParcBundle:Voiture:affichage }
esprit_parc_list:
path: /listvoiture
defaults: { _controller: EspritParcBundle:Voiture:list }
Voiture.controller.php
<?php
namespace EspritParcBundleController;
use SymfonyBundleFrameworkBundleControllerController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyComponentHttpFoundationResponse;
class VoitureController extends Controller
{
/**
* @Route("/affichage/{marque}")
*/
public function affichageAction($marque)
{
return $this->render("@EspritParc/Voiture/affichage.html.twig", array('marque'=>$marque
// ...
));
}
public function listAction() {
//array
$marques=array('BMW','RENAULT','PEUGEOT','FIAT');
$voitures=array(
array(
'id'=>'c2345',
'serie'=>'176',
'dateMiseCirculation'=>'11/10',
'marque'=>'BMW' ),
array(
'id'=>'A2345',
'serie'=>'156',
'dateMiseCirculation'=>'23/06',
'marque'=>'Renault' ),
array(
'id'=>'w0308',
'serie'=>'160',
'dateMiseCirculation'=>'30/08',
'marque'=> 'Fiat')
);
return $this->render("@EspritParc/Voiture/list.html.twig",array('marques'=>$marques),array('voitures'=>$voitures));
}
}
我找到了一个解决方案。问题出在VoitureController.php
中。render
应该这样写:
return $this->render("@EspritParc/Voiture/list.html.twig", array(
'marques'=>$marques,
'voitures'=>$voitures
));