如何使用特定的PHP代码(getDoctrine)来回显组合框?我试过,结果真的不如预期

时间:2011-12-21 09:05:38

标签: php symfony

我正在尝试生成一个包含数据库值的组合框。

为此,我决定在我的.html.twig

中添加一个简单的PHP代码

这是代码

<?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)"; ?>

我做错了什么?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

使用entity form type执行此任务。