Zugriff auf Iterator-Item innerhalb cond Template

Im Entwickler-Forum können Implementierungsdetails sowie Alternativen der Umsetzung diskutiert werden. // Here, developers can discuss implementation details of features of their projects.
Antworten
Thalo
Beiträge: 247
Registriert: 10.08.2009, 16:56:52

Zugriff auf Iterator-Item innerhalb cond Template

Beitrag von Thalo » 02.01.2017, 21:43:47

Frohes Neues!

so habe ich es probiert:

Code: Alles auswählen

<html:iterator name="test">
  <iterator:item>
    <cond:template content-mapping="${this->getParentObject()->getData('item')}" expression="content->getTest()" condition="notEmpty()">
      ${content->getTest()}
    </cond:template>
  </iterator:item>
</html:iterator>
Execution of expression "${this->getParentObject()->getData('item')}" failed with message "$previousResult is not of type object but "NULL"! Expression: "getParentObject()"."
Was mache ich falsch?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Zugriff auf Iterator-Item innerhalb cond Template

Beitrag von dr.e. » 03.01.2017, 14:03:46

Hallo Thalo,

das wünsche ich Dir auch! :) Hab ein erfolgreiches und gesundes neues Jahr!

Der <cond:template />-Tag evaluiert seinen Inhalt bereits auf Basis des umliegenden Variablen-Scopes, insofern ist das this->getParentObject() quasi eine Dopplung (siehe ConditionalTemplateTag.php:65).

Versuche es mal mit dem folgenden Code, das sollte klappen:

Code: Alles auswählen

<html:iterator name="test">
  <iterator:item>
    <cond:template content-mapping="item" expression="content->getTest()" condition="notEmpty()">
      ${content->getTest()}
    </cond:template>
  </iterator:item>
</html:iterator>
Das Data-Attribut "item" wird vom Iterator bereits in das Item injiziert und da es im Scope von <iterator:item /> existiert und der <cond:template />-Tag seine Inhalte von dort bezieht, kannst du darauf quasi "direkt" zugreifen.

Ich hoffe das Hilft dir!
Viele Grüße,
Christian

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Zugriff auf Iterator-Item innerhalb cond Template

Beitrag von dr.e. » 03.01.2017, 14:06:27

Nachtrag: ich habe dir unter https://github.com/AdventurePHP/code/bl ... t.php#L313 einen Unit Test hinzugefügt, der die Anwendung nochmal an Hand von Code zeigt.
Viele Grüße,
Christian

Thalo
Beiträge: 247
Registriert: 10.08.2009, 16:56:52

Re: Zugriff auf Iterator-Item innerhalb cond Template

Beitrag von Thalo » 05.01.2017, 14:42:22

Hallo Christian,

besten Dank. Das ist es gewesen! :)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste