Domanda

Mentre faccio scoprire che il framework PHP Symfony è meraviglioso per molte cose, mi sto trovando difficile la creazione di menu dinamici facilmente scalabile per un sito web.

Mi chiedo come altri sviluppatori Symfony là fuori hanno affrontato questo problema. Darò un semplice esempio di ciò che sto chiedendo.

Se andare a www.fool.com vedrete che essi hanno una configurazione tipica di menu. Un elenco di categorie con uno dei quali è quello attivo che è in qualche modo evidenziato con i CSS.

Quale potrebbe essere un buon modo per fare questo ha creato in modo dinamico in un progetto Symfony. Passando le variabili di qualche tipo da modulo a modulo. Non ho ancora trovato una soluzione elegante.

È stato utile?

Soluzione

In generale, ho solo costruire manualmente una serie di combinazioni di modulo / azione che mi piacerebbe apparire nel mio menu. Sarebbe abbastanza facile da afferrare queste informazioni da una fonte dinamica (come un file di configurazione, o di un database):

$this->menu = array(
    'Home' => array('default', 'index'),
    'About Us' => array('default', 'aboutUs'),
    'Products' => array('products', 'index')
);

Quindi, io uso i metodi getActionName e getMethodName del regolatore per determinare quale articolo nel mio menu è quello corrente:

$this->current = array_search(array($this->getModuleName(), $this->getActionName()), $this->menu);

Allora posso iterare menu di $, all'interno del modello, per costruire il menu. E posso confrontare gli elementi con $ attuale, per determinare se devo impostare una classe di "corrente" sulla voce di menu

  • .

    L'esempio fool.com si dà è un po 'più complicato, perché è a due livelli. In quel caso, si sarebbe probabilmente vuole essere la generazione il vostro albero di menu da un database, forse facendo uso di sostegno insieme nidificato di Propel.

  • Autorizzato sotto: CC-BY-SA insieme a attribuzione
    Non affiliato a StackOverflow
    scroll top