Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Smarty albero a n livelli

    Salve a tutti, sto cercando realizzare un albero a n livelli con smarty.
    Mi spiego meglio: ho un array php composto così:
    Codice PHP:
    array(
        new 
    MenuItem("Gestione contenuti","application","#","closed",null,array(
            new 
    MenuItem("Riepilogo","application_list",$default['BASE_URL']."/?cmd=contents_list","closed",null,array()),
            new 
    MenuItem("Nuovo","green_add","#","closed",null,array()) )),
        new 
    MenuItem("Gestione tipi di contenuto","application","#","closed",null,array(
            new 
    MenuItem("Riepilogo","application_list",$default['BASE_URL']."/?cmd=content_types_list","closed",null,array()),
            new 
    MenuItem("Nuovo","green_add","#","closed",null,array()) ))

    Considerando che ogni oggetto MenuItem può avere a sua volta altri MenuItem sotto di lui.
    Devo realizzare in smarty l'output di questo menu fino al livello n-esimo, cioè finché non incontra un MenuItem che non ha figli.
    Come fare? La ricorsione in smarty non è supportata un granché bene e non ho idea di come fare. Per pulizia di scrittura, non vorrei usare smarty_function. Se è l'unica soluzione xò...

    Grazie a tutti coloro che mi aiuteranno. Credo che questo sia un problema molto diffuso.

  2. #2
    Beh ho risolto da solo. Posto la soluzione per tutti coloro che cercano la soluzione a questa questione.
    Il file sotto si chiama menu_item.html
    Codice PHP:
    {foreach from=$menu key="n" item="element"}[*]
            {
    $element->description|htmlentities}
            {if 
    $element->underlist|@count gt 0}
                <
    ul>
                    {include 
    file="menu_item.html" menu=$element->underlist}[/list]
            {/if}
        
    {/foreach} 
    La chiamata deve essere fatta semplicemente così:
    Codice PHP:
    {include file="menu_item.html" menu=$menu_iniziale
    Un saluto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.