Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

PHP Smary While-Schleife?

Empfohlene Antworten

Veröffentlicht

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?

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?

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?


<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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.