Frage

Während finde ich, dass das PHP Symfony Framework für viele Dinge wunderbar, ich finde es schwierig, für eine Website leicht skalierbare dynamische Menüs zu erstellen.

Ich frage mich, wie anderer Symfony-Entwickler da draußen mit diesem Thema beschäftigt hat. Ich werde ein einfaches Beispiel geben, was ich zu fragen.

Wenn zu www.fool.com gehen, werden Sie sehen, dass sie ein typisches Menü Setup haben. Eine Liste von Kategorien mit einem von ihnen die aktive Wesen, die in irgendeiner Weise markiert mit CSS.

Was wäre ein guter Weg, um diese dynamisch in einem Symfony-Projekt angelegt zu machen. Passing Variablen von einer Art von Modul zu Modul. Ich habe noch nicht eine elegante Lösung gefunden.

War es hilfreich?

Lösung

Generell baue ich nur manuell ein Array von Modul / Aktionskombinationen, die ich in meinem Menü erscheinen möge. Es wäre ziemlich einfach, diese Informationen von einer dynamischen Quelle zu greifen (wie eine Konfigurationsdatei oder eine Datenbank):

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

Dann benutze ich den getActionName und getMethodName Methoden des Controllers, um zu bestimmen, welches Element in meinem Menü ist die aktuelle:

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

Dann kann ich über $ Menü durchlaufen, von der in der Vorlage, um das Menü aufzubauen. Und ich kann die Einzelteile mit $ Strom vergleichen, um festzustellen, ob ich die eine „aktuelle“ Klasse auf dem Menüpunkt setzen sollte

  • .

    Das fool.com Beispiel Sie geben, ist ein wenig komplizierter, weil es auf zwei Ebenen ist. In diesem Fall würden Sie wahrscheinlich Ihre Menübaum aus einer Datenbank werden wollen Erzeugung, vielleicht Verwendung von Propel des verschachtelten Satz Unterstützung zu machen.

  • Lizenziert unter: CC-BY-SA mit Zuschreibung
    Nicht verbunden mit StackOverflow
    scroll top