我有一系列以Twig变量{{ file }}
为目标的模板,目前输出文件的src,例如"/path/to/file.jpg"
。
我想将文件的内容更新为数组,以便存储多个属性,例如{{ file.src }} {{ file.size }}
。
如果我进行此更改,则{{ file }}
的所有使用都将输出数组。
是否可以设置Twig,以便它将改为以数组的第一个属性为目标?在这种情况下{{ file.src }}
。
非常感谢!
答案 0 :(得分:0)
如果您的变量是纯数组,则不能,但您可以使用对象执行此操作。
如果您希望对象像数组一样可用,则需要在班级中扩展ArrayObject。
您可以实施魔术方法__toString,使您的对象可以打印为字符串(在您的情况下为$this['src']
)。
我们有一个例子。
1)创建以下类:
class File extends \ArrayObject
{
public function __toString()
{
if (isset($this['src']))
{
return $this['src'];
}
}
}
2)在控制器中,初始化你的对象。
$file = new File();
$file['src'] = 'my_file.png';
$file['size'] = 42;
3)在你的twig文件中,试一试:
{{ file }}<br/>
{{ file.src }}<br/>
{{ file.size }}<br/>
4)享受