Breadcrumbs... sto impazzendo.

Ciao ragazzi,

sto cercando di creare delle breadcrumbs ma ottengo comportamenti strani e non riesco a capire cosa sbaglio.

Poniamo un menu fatto in questo modo:

categorie

    | casa

          | arredamento

          | agenzie immobiliari

    | divertimento

          | ristoranti

          |pub

          |discoteche

   | estetica

   | computer

Dopo aver creato il container dove ho inserito tutte le pagine, se faccio il render delle breadcrumbs, riesco ad ottenerlo fino al secondo livello (per esempio "divertimento"), ma non oltre. Tenete presente che non ho settato nessuna maxDepth().

Sono disperato, sono un paio d'ore che cerco di capire cosa non va ma non cavo un ragno dal buco!

Grazie a chiunque voglia aiutarmi.

inviato 7 anni fa
dacdam
X 0 X

Aggiornamento: ho scoperto che nel container non ci sono tutte le pagine, ma solo quelle fino al secondo livello... non capisco come mai però, avendo fatto una funzione ricorsiva che reperisce la catena di pagine.

Vi posto il codice della funzione di costruzione della pagina da inserire nel container:

   public static function getCategorie($padre = '' , $VFCercaFigli = '0'){

      //Recupero del database

      $db = Zend_Registry::get('db');

      //Determinazione del titolo della pagina

      if ($padre){

         //Il nome del padre è stato passato: stiamo trattando una sottocategoria

         $titolo = $padre;

         $parametri = array('cat'   => $padre);

      } else {

         //Il nome del padre non è valorizzato: stiamo trattando il primo livello di categorie

         $titolo = 'Categorie';

         $parametri = array();

      }

      //Inizializzazione dell'array delle pagine figlio

      $pagineFiglio = array();

      if ($VFCercaFigli != self::ConstModCercaFigliNessuno){

         //Determinazione delle sottocategorie dal database

         $sql = "SELECT * FROM categorie WHERE Padre = '$padre'";

         $figli = $db->fetchAll($sql);

         //Ciclo di aggiunta delle pagine figlio

         foreach ($figli as $figlio){

            //Determino la modalità di ricerca figli per la pagina figlio in esame

            if ($VFCercaFigli = self::ConstModCercaFigli1Livello){

               //Va cercato solo il primo livello di sprofondamento

               $ModSottoLivelli = self::ConstModCercaFigliNessuno;

            }else{

               $ModSottoLivelli = self::ConstModCercaFigliTutti;

            }

            $pagineFiglio[] = PagineSito::getCategorie($figlio['Codice'],$ModSottoLivelli);

         }

      }   

      //Creazione della pagina

      $pagina = new Zend_Navigation_Page_Mvc(array(   'action'      => 'index',

                                          'controller'   => 'Categorie',

                                          'label'         => $titolo,

                                          'pages'         => $pagineFiglio,

                                          'params'        => $parametri));   

      return $pagina;

   }

Il database che sta sotto ha una tabella con le categorie composta da due campi: uno è il codice della categoria e l'altro è il codice della categoria "padre".

Spero di trovare un'anima pia che mi aiuti...

risposto 7 anni fa
dacdam
X 0 X

Ho fatto un debug sulla routine che vi ho postato prima ed ho scoperto che funziona correttamente.

Allora penso che il problema possa essere nell'utilizzo del RecursiveIteratorIterator di SPL

ecco come lo uso:

$ScansioneSottoCategorie = new RecursiveIteratorIterator($this->view->breadcrumbs, RecursiveIteratorIterator::SELF_FIRST);

Sto cercando documentazione in merito ma non ne trovo (non che mi aiuti per lo meno)...

risposto 7 anni fa
dacdam
X 0 X

Risolto.... nella mia routine getCategorie c'era un if(a=b) che doveva -naturalmente- essere un if(a==b)....

Che errore stupido  >:(

Ignorate questo post.

Ciao a tutti.

risposto 7 anni fa
dacdam
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda