Wert für Tag-Attribute im Controller setzen

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: 240
Registriert: 10.08.2009, 16:56:52

Wert für Tag-Attribute im Controller setzen

Beitrag von Thalo » 02.11.2016, 18:06:57

Hallo zusammen,

ich möchte die Kommentar-Funktion adaptieren um den Wert des categorykey Attributs zur Laufzeit im Controller zu setzen.

Laut Timing-Modell ist es zu spät für ein getChildNode()->setAttribute(). Welche Möglichkeiten / Alternativen habe ich sonst?

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Wert für Tag-Attribute im Controller setzen

Beitrag von dave » 02.11.2016, 22:19:46

Ich bin mit dem Kommentar-Modul nicht vertraut und Christian ist im Moment in Urlaub:

Die Klasse ArticleComment bietet doch die Möglichkeit setCategoryKey($categoryKey). Kannst du damit was anfangen?

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

Re: Wert für Tag-Attribute im Controller setzen

Beitrag von Thalo » 03.11.2016, 01:56:26

Hi,

nein. Dann müsste ich den categoryKey in der URL halten.

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

Re: Wert für Tag-Attribute im Controller setzen

Beitrag von dr.e. » 03.11.2016, 13:52:04

Hallo Thalo,

direkt bietet das Modul keine weitere Möglchkeit ausser der statischen Definition via Tag. Da im APF der komplette DOM-Baum innerhalb eines Tags zugänglich ist, könntest du parallel zur Einbindung des Moduls via z.B.

Code: Alles auswählen

<core:importdesgn namespace="APF\modules\comments\pres\templates" template="comment" categorykey="default" />
noch einen zweiten, neuen Tag platzieren:

Code: Alles auswählen

<inject:category />
<core:importdesgn namespace="APF\modules\comments\pres\templates" template="comment" categorykey="default" />
Dieser könnte dann über

Code: Alles auswählen

class InjectCategoryTag extends Document {

   public function onAfterAppend() {
      $module = $this->getParentObject()->getChildNode('categorykey', 'default', ImportTemplateTag::class);
      $module->setAttribute('categorykey', 'my dynamic value');
   }

} 
Den gewünschten Wert injizieren. Warum funktioniert das so? Innerhalb eines Tags bzw. innerhalb eines Controllers kannst du jederzeit auf deine umliegenden Dokumente zugreifen und die CategoryKey wird in den Controllern des Moduls erst zur Transformations-Zeit (die nach der Parse-Zeit liegt) genutzt.

Hoffe der Workaround hilft dir weiter! :)

Als nachhaltige Lösung sollten wir das modul selbst erweitern, dass es so eine dynamische Übergabe - z.B. per URL, Session, o.ä - nativ unterstützt.
Viele Grüße,
Christian

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

Re: Wert für Tag-Attribute im Controller setzen

Beitrag von Thalo » 03.11.2016, 17:25:07

Hi Christian,

dann sollte es doch auch über getChildNode()->setAttribute im parent Controller funktionieren? :geek:

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

Re: Wert für Tag-Attribute im Controller setzen

Beitrag von dr.e. » 03.11.2016, 21:15:48

Hi!

stimmt - sehr gut erkannt. :) Bei der Transformation wird ja zunächst der Controller aufgerufen und dann die Kinder transformiert (siehe Document::transform()). Probiers mal aus!
Viele Grüße,
Christian

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

Re: Wert für Tag-Attribute im Controller setzen

Beitrag von dr.e. » 27.11.2016, 19:56:34

Und, hat es funktioniert?
Viele Grüße,
Christian

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

Re: Wert für Tag-Attribute im Controller setzen

Beitrag von Thalo » 05.12.2016, 16:55:15

Hi Christian,

danke, funktioniert prima! :) Ich setze das häufiger ein um die URL „clean“ zu halten.

Antworten

Wer ist online?

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