在twig模板中显示symfony对象值

Bob*_*ing 8 symfony twig

我是Symfony/Twig的新手,在将对象值传递给我的twig模板时遇到了问题.

以下是我的一些控制器代码,它显示了对象的内容:

$prevArticles = $section->getArticles();      
print_r($prevArticles);
die()
Run Code Online (Sandbox Code Playgroud)

显示:

Array
(
    [0] => Imagine\NewsletterBundle\Entity\Article Object
        (
            [id:protected] => 
            [title:protected] => 
            [headline:protected] => 
            [link:protected] => 
            [image:protected] => 
            [excerpt:protected] => 
            [check:protected] => 
            [attachment:protected] => 
            [field1:protected] => 
            [field2:protected] => 
            [field3:protected] => 
            [magazines:protected] => 
            [top_logo_advert:protected] => /uploaded_images/cece0b1859ea2b1af95f1f274620ba77.jpg
            [top_logo_alt:protected] => Picture of blomange
            [top_logo_link:protected] => www.google.com
        )

)
Run Code Online (Sandbox Code Playgroud)

那么我将我的对象传递给我的twig模板,如下所示:

    return $this->render('ImagineNewsletterBundle:Section:'.$builder->getTemplate(), array('prevArticles' => $prevArticles));
Run Code Online (Sandbox Code Playgroud)

然后在我的twig模板中,我想显示'top_logo_advert'的值,但它不起作用:

{% for article in prevArticles %}

   {{ article.top_logo_advert }}

{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

Method "top_logo_advert" for object "Imagine\NewsletterBundle\Entity\Article" does not exist in ImagineNewsletterBundle:Section:build_advert.html.twig at line 62
Run Code Online (Sandbox Code Playgroud)

sf_*_*anb 15

您必须通过以下方式访问它

{{ article.topLogoAdvert }} 要么 {{ article.getTopLogoAdvert() }}

这两种方案都有效 下一次,只需提醒您在树枝引擎中'my_property_1'转换为类似属性myProperty1.

  • 如果这与OP或其他偶然发现的帖子有关,请注意-您尝试通过魔术__get()方法访问的非公共属性不会进入Twig,除非您还定义了__isset ()`。请参阅:http://twig.sensiolabs.org/doc/recipes.html#using-dynamic-object-properties (2认同)