这是事情。培训师可以说多种语言。我想在页面上显示一个或多个培训师的语言。请注意,我正在编写一个我从头开始的代码。
在我的控制器中:
foreach ($trainers as $trainer){
$trainer_entity = $doctrine->getRepository('AppBundle:Trainer')->find($trainer["id"]);
$listLangues = $this->getDoctrine()
->getManager()
->getRepository('AppBundle:TrainerLangues')
->findByTrainer_id($trainer["id"]);
}
return [
'user' => $user,
'listLangues' => $listLangues,
'trainers' => $trainers,
];
在我的twig文件中:
{% if listLangues %}
<b>Langues</b> :
{% for l in listLangues %}
{{ l.langue.name }}
{% endfor %}
{% endif %}
当此人链接到语言时,此方法有效,因此listLangues不为空。
否则我得
注意:未定义的变量:listLangues 500内部服务器错误 - ContextErrorException
我也试过{% if listLangues is defined %}
,但系统似乎在控制器中阻塞了。它以前从未发生在我身上。
请注意,初始化$listLangues
只会导致树枝页面无法显示。
有什么想法吗?
答案 0 :(得分:1)
你真的想在视图中显示什么?
以下是一个简单的提示,您可以在控制器中尝试:
/***/
public function yourAction()
{
return $this->render('your-template.html.twig', [
'user' => $this->getUser(),
'trainers' => $this->getDoctrine()->getRepository(Trainer::class)->findAll()
]);
}
/***/
然后,在您的视图中(基本实现)
{% for trainer in trainers %}
<h4>{{ trainer.name }}</h4>
{% if trainer.languages %}
<ul>
{% for language in trainer.languages %}
<li>{{ language.name }}</li>
{% endfor %}
</ul>
{% endif %}
{% endfor %}
希望,它会对你有帮助。
答案 1 :(得分:0)
您需要实例化$listLangue
,因为如果没有培训师,则变量不存在且代码已损坏。
尝试在foreach之前添加:
$listLangues = null;
或者用一个值或你想要的东西来实例化它,但是在你的foreach之前声明它以确保它存在
答案 2 :(得分:0)
如果数组$trainers
为空,则foreach nevers循环,以便永远不会定义$listLangues
var。
尝试在foreach之前将其声明为空数组:
$listLangues = array();