Twig与php不同

时间:2016-12-20 14:23:16

标签: php for-loop twig logic

为什么当我在php中编写测试时...

foreach ($rounds as $round){
    $assignment = $em->getRepository(‘WorkBundle:Doc’)->findOneBy(array(
        ‘user’ => $user->getId(),
        ’whichRound’ => $round,
    ));

   if (!$assignment){
    echo “assign ”.$round. “ to user”;
   }else{
    echo “already assigned to ”.$round. “ to user”;
   }
 }

return array (
    'user' =>  $user,
    'assignment' => $assignment,
    'rounds' => $rounds,
);

......它运作正常。当赋值为空时,它将输出“assign ”.$round. “ to user”;,当它不为空时,它将输出“already assigned to ”.$round. “ to user”;

然而,当我使用上面返回的变量进入我的twig模板并执行...

{% for round in rounds %}
    {% if assignment is null %}
        <h2>{{ user }} successfully added to {{ round }}</h2>
    {% else %}
        <h2>{{ user }} has already been assigned to the {{ round }}</h2>
    {% endif %}
{% endfor %}

......它无法正常工作?它将输出相同的消息两次...在一个例子中,如果第一轮为空而第二轮不为空,它将输出第二条消息{{ user }} has already been assigned to the {{ round }}两次。

我搞砸了什么?

1 个答案:

答案 0 :(得分:1)

当您在代码中浏览foreach循环时,每次都会设置folder_name.html。当您返回数组时,您只返回 last 时间folder_name已设置。

看起来$assignment是一个数字数组,您希望将该轮与分配结果相关联。基于此,我建议建立一个像这样的新阵列:

$assignment

您的Twig模板将如下所示:

$rounds