2016-10-21 17 views
1

我正在從PHP中的硬編碼HTML移開。我已經在基本的Twig模板上取得了一些成功,但我正在努力使用PHP對象。我儘可能地簡化了事情,並且仍然有顯示PHP Object參數的問題。希望我只是犯了一個愚蠢的錯誤,但我在這上面花了很多時間。如果我刪除我的對象並使用數據填充數組,它工作正常。使用Twig來顯示PHP對象參數

我樹枝文檔這讓我覺得它應該工作在閱讀這樣的:如果

•檢查foo是一個數組和酒吧,一個有效的元素;

•如果不是,並且如果foo是對象,請檢查該欄是否爲有效的屬性;

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; 

它返回預期值。該模板正確顯示在瀏覽器窗口中,但樹枝部分爲空白。

導致瀏覽器HTML:

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

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

任何幫助表示讚賞。

回答

1

嘗試通過obj數組引用。試試這個:

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

,而不是這樣的:

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

希望這有助於

+0

這工作!能夠 – vanamp

相關問題