2013-08-08 15 views
7

Ich bin neu bei Symfony/Twig und habe Probleme beim Übergeben von Objektwerten an meine Zweigvorlagen.Symfony-Objektwerte in Zweigvorlage anzeigen

Hier einige meiner Controller-Code, der den Inhalt des Objekts zeigt:

$prevArticles = $section->getArticles();  
print_r($prevArticles); 
die() 

Displays:

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 
     ) 

) 

So dann wie so ich mein Objekt zu meiner Zweig Vorlage übergeben:

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

Dann in meiner Zweig Vorlage möchte ich den Wert von 'top_logo_advert' anzeigen, aber es funktioniert nicht:

{% for article in prevArticles %} 

    {{ article.top_logo_advert }} 

{% endfor %} 

erhalte ich die Fehlermeldung:

Method "top_logo_advert" for object "Imagine\NewsletterBundle\Entity\Article" does not exist in ImagineNewsletterBundle:Section:build_advert.html.twig at line 62 

Antwort

14

Sie es über zugreifen müssen:

{{ article.topLogoAdvert }} oder {{ article.getTopLogoAdvert() }}

Beide Lösungen arbeitet. Das nächste Mal, nur Erinnerung, dass Eigenschaften wie 'my_property_1' in myProperty1 in der Zweig-Engine umgewandelt wird.

+0

Großartiges Zeug. Ich habe {{article.topLogoAdvert}} implementiert und es hat funktioniert. Also, was ist der Deal mit Twig ändern Variablennamen dann? Ich nahm an, dass top_logo_advert funktioniert hätte? –

+1

Weil Sie mindestens PSR-0 Konventionen folgen sollten. Es bedeutet, dass Sie in erster Linie keine Funktion auf Ihrem Objekt mit einem oder mehreren Unterstrichen deklarieren sollten. Verwenden Sie stattdessen camel case-Eigenschaften und -Variable. –

+0

Ok notiert. Ich werde zurückgehen und meine Variablen umbenennen. Prost –