Zum Inhalt springen

PHP Smary While-Schleife?


Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen


<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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...