我正在努力摆脱 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/