Wie kann ich Zugriff auf repository-Funktionen in twig template in symfony2
Habe ich die class categroies
und class Products
.
In meinem repository habe ich die Funktion
getProducts($categoryid,$location)
Brauche ich eine Schleife in twig template wie dieses
{% for category in categories %}
--{{ category.name }}--
{% for product in getProducts(category.id,location) %}
--{{ product.name }}--
{% endfor %}
{% endfor %}
oder gibt es eine bessere Möglichkeit für das
- Haben Sie versucht {% for item in Produkt.Elemente %} ?
- Ich denke, Sie sollten einen Zweig, der Erweiterung. Werfen Sie einen Blick auf dieses Thema
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollte man nicht. Thats business-Logik, die nicht in den Vorlagen. Eine Lösung ist, erstellen Sie eine neue Aktion in einem controller, und in Ihrer Vorlage nennen
product[category][products]
im controller und senden Sie dann das array im templatefor product in category.products
. Ja, es gibt mehrere Lösungen, aber das aufrufen der entity repository ist nicht einer von Ihnen.onetomany
Beziehung, aber problem ist, wie man die Lage-filter zeigt alle Produkte, wenn ich das machefor product in products|products_by_location(location)
oder so ähnlich. Sie finden Informationen darüber, wie zu implementieren ist Recht einfach, wenn usin s2 in diesem Artikel und im offizielle Handbuch "Wie Schreibe ich eine benutzerdefinierte Twig-Erweiterung".render
Funktion, was macht der Controller-Funktion aufgerufenrender
tun?Es ist eine ziemlich alte Frage, aber mir fehlt eine wirklich einfache Lösung wie dieser.
Ist es möglich, übergeben Sie den repo-Objekt Zweig aus und rufen Sie den repo-öffentliche Methoden von Zweig so:
In Ihrem controller
Und dann in Ihrem Zweig Vorlage :
Ich sagen, es ist möglich, viele würden argumentieren, dass die Vorlagen sollten nur Daten anzeigen und lassen Controllern, die Daten sammeln. Ich persönlich glaube nicht daran, dass meine Vorlagen bekommen, Ihre Daten selbst.
Ich vermute, dass alles, was Sie wirklich brauchen, ist ein left join mit einem MIT Ausdruck. So etwas wie:
Geben Sie alle Kategorien, mit Ihren jeweiligen Produkte für einen bestimmten Ort.
Die Lösung ist die andere Weise herum, wie dies geschieht jetzt. Die Kategorie-Entität haben sollten, eine eins-zu-viele-Beziehung. Werfen Sie einen Blick auf http://symfony.com/doc/2.0/book/doctrine.html#entity-relationships-associations
Die Kategorie, sollte ein Unternehmen dann ein EntityCollection Attribut namens 'Produkte'. In Ihrer Vorlage, die Sie dann lösen können Sie diese in der folgenden Weise: