2013-04-26 47 views
0

我有一系列模板,目標是Twig變量{{ file }},它目前輸出文件的src例如"/path/to/file.jpg"Twig - 輸出陣列鍵如果陣列被引用

我想將文件的內容更新爲一個數組,以便它存儲多個屬性,例如{{ file.src }} {{ file.size }}

如果我進行此更改,則{{ file }}的所有用途將輸出陣列

是否可以設置Twig,以便將它定位到數組的第一個屬性?在這種情況下,{{ file.src }}

非常感謝!

回答

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)在你的枝杈文件,試試吧:

{{ file }}<br/> 
{{ file.src }}<br/> 
{{ file.size }}<br/> 

4)享受

enter image description here