Was ist die beste Art und Weise dynamische Datenbank gefahrene Menüs in CakePHP zu schaffen?

StackOverflow https://stackoverflow.com/questions/613996

  •  03-07-2019
  •  | 
  •  

Frage

Ich will auf jeder Seite ein Menü anzuzeigen, die aus einer Datenbank ausgeführt wird. Mit nur nach unten und schmutzig php das ist einfach, aber ich mag es integrieren, mit CakePHP ihrem MVC-System. Nun meine Frage ist, wie der beste Weg, um dies zu realisieren ist?

Meine Gedanken sind ein Element mit dem Layout zu machen und dann einer Komponente oder einen Controller für die ganze Logik. Irgendwelche Vorschläge dazu? Oder ist ein Helfer, was ich verwenden?

Ich brauche auch alle Daten aus mehreren Tabellen in der Datenbank zu erhalten. Ist es am besten, alle meine Daten zu tun Logik durch ein Modell zu sammeln? Oder tun die meisten davon in der Menüsteuerung (oder Komponente) und verwenden Sie die Modelle für jede Tabelle?

Danke,

Walter

War es hilfreich?

Lösung

Modelle sollten holen und Prozessdaten aus der Tabelle, die sie modelising, so Menüdaten für jedes Modell in diesem Modell holen.

Komponenten sollen Logik von mehreren Steuerungen gemeinsam genutzt beherbergen, so dass eine Menü-Komponente, die von allen Controllern verwendet wird, klingt wie ein guter Ort, um den Code zu setzen, die Menüdaten aus den Modellen zu holen und zerdrücken sie zusammen.

Ein Menü ist in der Regel eine verschachtelte Liste, wenn dies der Fall mit Ihrem Menü ist auch der einfachste Weg, das Markup hierfür ist eine rekursive Funktion (eine Funktion, die mich selbst aufruft), um die zu einem Zeitpunkt eine Ebene gibt, so eher als ein Element, würde ich nur in ein Helfer mit einem Menü () -Methode erstellen, und das aus dem Layout direkt aufrufen.

Andere Tipps

Ich bin mit neilcrooks beantworten, möchte aber ein paar Dinge für Klarheit hinzuzufügen.

Helfer und Elemente ziemlich einfach sind, mit der Ausnahme, dass Helfer etwas robuster sein können (zumindest das ist, wie ich denke an ‚em;)). Also, wenn Sie einen Helfer verwenden, können Sie binden und unbind Modell Assoziationen on the fly -., Die Sie Daten von Ihren (vorübergehend) zugeordnet Modellen greifen können

Ich persönlich mag Fett Modelle und dünn Controller, so dass ich denke, wenn ich in dieser Situation wäre, würde ich einen Helfer verwenden und vorübergehend die Modelle, um es zu binden. Alle Daten, die ich aus den bestehenden Modellen holen müssen die zugegriffen werden sollen, durch Model1-> fetchMenuPart (...) gibt Anrufe.

Dann können Sie Ihre Helfer aus dem Layout-Datei aufrufen (s).

Ich weiß nicht, warum dies nicht überall dokumentiert ist, aber ich habe gerade diese letzte Nacht. Die Variablen für Ihr Layout oder Elemente mit der Endung _for_layout definiert werden. Zum Beispiel: $ this-> set ( 'categories_for_layout', $ this-> Kategorie-> finden ( 'all'));

habe ich die Methode before in der AppController Klasse, weil ich in jeder Seite dieses Menü benötigt.

Hier ist eine große Lösung, die ich entdecken, während für diese sehr Sache der Suche im Internet.

http://articles.classoutfit.com/cakephp-dynamic-navigation- Bars /

ich denke, dass Sie ein Element erstellen verwenden, das das HTML für das Menü halten würde und dann das Menü in Ihrem Layout machen.

echo $this->element('your menu');

Um es dynamisch machen Sie die Menü-Links gesetzt, vielleicht als ein Array in der Steuerung.

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