Veröffentlicht 26. Mai 200421 j Hallo zusammen, ich habe hier eine object struktur, die ich von einem menu abgeleitet habe. also im sinne von: Parent => Produkte Child => Computer Child => Stereoanlage Child => Fernseher nun habe ich alle meine Produkte in einem Wunderschönen Array zusammengepackt. Alle meine Menupunkte sind Objecte die die Methode getParent() und getChild() enthalten. Nun möchte ich dieses Array nur noch an mein Template übergeben, und dieses Soll mir anhand des Arrays eine dazu passende Tabelle erstellen. Mein ansatz: <table cellspacing="0" cellpadding="0" width=90%> { foreach from=$aoMenuStructure item=oMenuItem } <tr> <td>{ $oMenuItem->sLabel }</td> <td>{ $oMenuItem->sLink }</td> </tr> { if ($oMenuItem->hasChildItems())} { foreach from=$oMenuItem->getChildItems() item=oChildItem } <tr> <td style="padding-left: { $oChildItem->iLevel*20 }px;">{ $oChildItem->sLabel }</td> <td>{ $oChildItem->sLink }</td> </tr> { /foreach } { /if } { /foreach } </table> [/PHP] Nur wenn ich das nun so lasse, zeigt er mir nur die ersten beiden Ebenen an Elementen auf. Leider habe ich keine Möglichkeit gesehen, in Smarty z.B. anstatt von [PHP] { if ($oMenuItem->hasChildItems())} in etwa sowas zu bauen: { while ($oMenuItem->hasChildItems())} { /while } [/PHP] weiss jmd was ich meine und ob ich das so verwirklichen könnte?
27. Mai 200421 j Probiere mal vor der zweiten foreach-schleife das ergebnis von getChildItems() in einer variablen zu speichern un diese dann in der schleife zu durchlaufen. wie sieht das ergebnis aus?
27. Mai 200421 j Probiere mal vor der zweiten foreach-schleife das ergebnis von getChildItems() in einer variablen zu speichern un diese dann in der schleife zu durchlaufen. wie sieht das ergebnis aus? hm das Problem ist ja, das ich eine unbestimmte anzahl an childs in meinen elementen drinne hab ( von der Tiefe her gesehen, da ja jedes child wiederum ein child haben kann usw.) wie kann ich in smary eine variablenzuweisung durchführen?
27. Mai 200421 j http://smarty.php.net/manual/de/language.custom.functions.php#language.function.assign {assign name="neueVariable" value=$obj->getChildItems() } [/PHP]
27. Mai 200421 j http://smarty.php.net/manual/de/language.custom.functions.php#language.function.assign {assign name="neueVariable" value=$obj->getChildItems() } [/PHP] gut zu wissen, das man das assign tag auch in den templates verwenden kann könntest du mir nen kurzen auszug geben, wie du meinst, das der code meinen anforderungen entspricht?
28. Mai 200421 j <table cellspacing="0" cellpadding="0" width=90%> { foreach from=$aoMenuStructure item=oMenuItem } <tr> <td>{ $oMenuItem->sLabel }</td> <td>{ $oMenuItem->sLink }</td> </tr> { if ($oMenuItem->hasChildItems())} { assign var=aoMenuStructure[] value=$oMenuItem->getChildItems() } { /if } { /foreach } </table> [/PHP] ich habs jetzt so, aber irgendwie fehlt noch der letzte schliff. Es geht nicht Wo könnte mein denkfehler sein. ich muss irgendwie hinbekommen, dass ich den punkt den er als nächstes aus dem aoMenuStructure Array "holt", das child ist das ich unten zuweise
2. Juni 200421 j Hallo zusammen, wenn jemand nochmal auf diese Problem stoßen sollte, die Lösung fand ich durch einbinden eines Plugins das "Rekusionen" ermöglicht. näheres siehe: http://www.phpinsider.com/smarty-forum/viewtopic.php?t=291
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.