2017-01-27 8 views
1

ich bereits dies überprüfen postaktualisieren Objektattribute in Zweig

Ich habe ein ähnliches Problem

Ich habe eine Variable Objekt mit Attributen anderer Objekte

so habe ich die Hauptsache, und ich will null gesetzt zu einem ihrer Eigenschaften versucht

ich diese Optionen aber sie nicht natürlich vor jeder Zeile habe ich den Fehler, der mir

012 geben Bitte

Hilfe
+2

können Sie einen Kuchen in einem Gefrierschrank backen? Nein, warum? Weil Gefrierschränke nicht dafür ausgelegt sind, einen Kuchen zu backen! Zweig wird gemacht, um eine Ansicht zu machen. keine Objekte zu bauen. Das sollten Sie in der Steuerung oder einem anderen Dienst tun. –

+0

Wird das Objekt vor einer anderen Zuweisung initialisiert? – Matteo

+0

Können Sie Ihren vollständigen Code zeigen, und insbesondere was ist "Objekt"? Sie können auch 'dump (object)', um anzuzeigen, wie es aussieht. –

Antwort

-1

Damit dies funktioniert, muss object ein Objekt an erster Stelle sein. Die Fehlermeldung zum letzten Versuch (Mergefilter) zeigt deutlich, dass dies nicht der Fall ist (in PHP ist jedes Objekt Traversable). Zusätzlich muss das Objekt eine öffentliche Eigenschaft namens other haben.

Sie sollten auch auf den Unterschied zwischen {'other',null} und {'other': null} achten.

Nachdem Sie alle diese Probleme behoben haben (zB ob Sie zuerst ein Objekt object zuweisen), funktioniert der Zusammenführungsfilter genauso wie in der Frage, mit der Sie verlinkt sind.

+0

-1: Erstens, wenn 'Objekt' wurde nicht zugewiesen, Twig würde sagen _'... bekam" NULL "als erstes Argument In der OP-Frage Objekt ist eindeutig ein Objekt. Zweitens ist nicht jedes Objekt Traversable, [siehe die Dokumentation] (https://secure.php.net/manual/en/class.traversable.php).Drittens, der Merge-Filter von Twig funktioniert nicht mit Objekten, die nicht durchsuchbar sind. Er funktioniert nur mit Arrays oder Traversible-Objekten. – martias

0

Die ersten drei Ihrer Beispiele sind nicht gültig Twig-Syntax, wie die Fehlermeldungen sagen. Das vierte Beispiel, das den Twig-Merge-Filter verwendet, würde funktionieren, wenn Ihr Objekt ein Array, ein Hash (d. H. {% set object = { other: 'something' } %}) oder eine Instanz einer Traversable-Klasse wäre. Ihr Objekt ist keines davon, wie aus der Fehlermeldung von Twig ersichtlich ist: 'Der Merge-Filter funktioniert nur mit Arrays oder "Traversable", bekam "Objekt" als erstes Argument. Beachten Sie auch, dass Sie einen Tippfehler haben (wie bereits von aferber erwähnt): Sie haben {'other', null}, während Sie {'other': null} (oder {other: null}) haben sollten.

Also, was Sie versuchen, kann nicht in Twig Out-of-the-Box getan werden. Sie müssen entweder Ihre Klasse ändern (z. B. eine Methode erstellen, die die other-Eigenschaft auf null setzt) ​​oder eine Zweig-Erweiterung erstellen. Die Frage Adding a property to an object in twig enthält Antworten, die zeigen, wie Sie diese Lösungen angehen könnten.

Eine dritte Möglichkeit wäre, Ihre Klasse zu modifizieren, so dass das Objekt Traversable ist. Dann könnten Sie den Zusammenführungsfilter verwenden.

Natürlich besteht eine weitere Möglichkeit darin, zu versuchen, dies in Twig zu tun und dies z. in einem Controller (wie bereits von Frank B vorgeschlagen).

Verwandte Themen