php - 使用Twig显示PHP对象参数

标签 php templates twig

我正在努力摆脱 PHP 中的硬编码 HTML。我在基本的 Twig 模板方面取得了一些成功,但在 PHP 对象方面却遇到了困难。我已经尽可能地简化了事情,但在显示 PHP 对象参数时仍然遇到问题。希望我只是犯了一个愚蠢的错误,但我在这上面花了很多时间。如果我删除对象并用数据填充数组,它就可以正常工作。

我在 twig 文档中读到了这个,这让我认为它应该有效:

• 检查 foo 是否为数组且 bar 是否为有效元素;

• 如果不是,并且 foo 是一个对象,请检查 bar 是否是一个有效的属性;

PHP:

<?php
    require_once ('../vendor/twig/twig/lib/Twig/Autoloader.php');

    Twig_Autoloader::register();
    $loader = new Twig_Loader_Filesystem($_SERVER["DOCUMENT_ROOT"].'test/templates/');$twig = new Twig_Environment($loader, array(
        'cache' => './tmp/cache',
    ));
    $template = $twig->loadTemplate('test.phtml');

    $obj = new Person();

    $obj->fName = 'firstName';
    $obj->lName = 'lastName';

    $template->display(array($obj));


    class Person{

        public $fName;
        public $lName;

    }

?>

模板

<html>
    <head><title>Twig template!</title></head>
    <body>

        Person
        <ul>
        {% for person in obj %}
            <li>{{ person.fName }} {{ person.lName }}</li>
        {% endfor %}
        </ul>
    </body>
</html>

如果我执行 var_dump,我可以看到我的对象并设置参数。如果我使用手动回显参数

echo $obj->fName;

它返回预期值。模板正确显示在浏览器窗口中,但 Twig 部分为空白。

浏览器中生成的 HTML:

<html>
    <head><title>Twig template!</title></head>
    <body>

        Persons
        <ul>
                </ul>
    </body>
</html>

感谢任何帮助。

最佳答案

尝试传递obj数组引用。试试这个:

$template->display(array('obj' => array($obj)));

而不是这个:

$template->display(array($obj));

希望这有帮助

关于php - 使用Twig显示PHP对象参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40181979/

相关文章:

javascript - Twig JS 内联模板无法解析

php - 如何用php连接文件夹中的html

php - 使php中的新行写入文件

php - 变量数量与参数数量不匹配——是的,它们匹配

c++ - 模板特化函数参数计数

php - 没有特定 Symfony2 TWIG 页面的缓存

Javascript/Jquery计算动态文本框表单

c++ - 模板代码膨胀是否仍然是最新编译器/链接器的问题

c++ - 是否可以创建没有元组的复合构造函数?

php - Silex - 如何访问我的网络根目录和应用程序根目录