如何使用一个特定的PHP代码(getDoctrine)来回应一个组合框?我试过了,结果真的不像我想象的那样


How to use a specific PHP code (getDoctrine) to echo a combobox? I tried and the result is really not as expected

我试图生成一个组合框与我的数据库值在它。

为了做到这一点,我决定把一个简单的php代码在我的。html.twig

代码

<?php
            $villes = $this->getDoctrine()
            ->getRepository('ProjetEsamuzeDiorBundle:Villes')
            ->findAll();
            echo "<select name='ville'>";
            for ($i=0;$i<count($villes)-1;$i++)
            {
                echo "<option value='".$villes[$i]->getId()."'>".$villes[$i]->getNom()."</option>";
            }
            echo "</select>";
        ?>

这个的输出是

getDoctrine() ->getRepository('ProjetEsamuzeDiorBundle:Villes') ->findAll(); echo ""; for ($i=0;i".$villes[i]->getNom().""; } echo ""; ?>

请记住,这是直接在页面上,好像刚才有一个回声,但没有。我想可能是$this,但是用$villes替换它会得到相同的结果

我也没有看到我所看到的就是这个

getDoctrine() ->getRepository('ProjetEsamuzeDiorBundle:Villes') ->findAll(); echo "(combobox is empty here)"; ?>

我做错了什么?

不能在小模板中使用PHP。将对Twig进行解析并转换为PHP,但不解释PHP代码。你必须使用twig语法

此外,你真的不应该把逻辑放入模板中。Twig在阻止你这么做方面做得很好。数据库查询应该转到控制器。

不应该是$villes[$i]而不是$villes[i]吗?

此任务使用实体表单类型