gpt4 book ai didi

php - Twig 中不存在 Symfony 变量

转载 作者:行者123 更新时间:2023-12-03 23:46:01 27 4
gpt4 key购买 nike

我有这两个实体 Users.phpsprovider.php和一个 UserController.php困扰我的是当我尝试在此函数中渲染模板时的结果。

 /**
* @Route("/sproviderhome", name="sprovider_home")
*/
public function sproviderHomeAction(Request $request){

$email = $request->get('email');
$password = $request->get('password');

$user= $this->getDoctrine()
->getRepository('AppBundle:Users')->
findOneBy(array('email' => $email, 'password' => $password));

$jobs = $this->getDoctrine()
->getRepository('AppBundle:jobs')
->findAll();

if($user){
return $this->render('home/sprovider.html.twig', array(
'user' => $user,
'jobs' => $jobs,
));
}else{
return $this->render('home/login.html.twig', array(
'message' => "Sorry, you need to login first.",
));
}
}

结果在 sprovider.html.twig :

Variable "jobs" does not exist in home/sprovider.html.twig at line 8



sprovider.html.twig:
{% extends '::base.html.twig' %}

{% block body %}
{% if user is defined %}
<h2 class="page-header">Welcome {{ user.name }}</h2>
{% endif %}

{% for job in jobs %}
{{ job.name }}
{% endfor %}
{% endblock %}

这里奇怪的是 $user存在但 $jobs才不是。

到目前为止我尝试的是转储 jobs没有问题,工作在变量中。

我尝试的另一件事是传递这样的字符串:
return $this->render('home/sprovider.html.twig', array(
'user' => $user,
'jobs' => 'jobs',
));

结果一样。看起来它只渲染第一个对象,这很奇怪,因为我传递了一个 array() .我错过了什么重要的东西吗?这和 cache有关系吗? ?我清除了浏览器和学说缓存,仍然没有。我想不出还有什么原因会导致这种情况。在同一个 Controller 中的其他函数中,我在渲染数组时没有问题。

最佳答案

如果之前没有定义放置条件的作业变量,您可以使循环安全。

{% if jobs is defined %}
{% for job in jobs %}
{{ job.name }}
{% endfor %}
{% else %}
No jobs found.
{% endif %}

关于php - Twig 中不存在 Symfony 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36544416/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com