Hat das schon einmal jemand ausprobiert? Ist es möglich, und wenn ja, auf welche Art von Problemen werde ich stoßen, wenn ich es zu erreichen versuche?
Antworten
Zu viele Anzeigen?Wenn das Ziel darin besteht, die Logik zwischen Controllern zu teilen:
-
Fügen Sie die Logik zum AppController hinzu, um sie mit allen Controllern in Ihrer Anwendung zu teilen.
-
Erstellen Sie eine Komponente und fügen Sie diese zu $this->components für die Controller hinzu, die Sie gemeinsam nutzen möchten.
Das Hinzufügen von zusätzlicher Vererbung zwischen Controllern sollte nur als letzter Ausweg in Betracht gezogen werden, da Sie besonders darauf achten müssen, wie Komponenten und Helfer gehandhabt werden. Z.B. müssen Sie $this->components & $this->helpers manuell mit dem AppController und dem Controller, von dem Sie erben, zusammenführen.
Sie werden Probleme bekommen mit $components
y $helpers
Eigenschaften nicht zusammenführen und stattdessen überschreiben. Achten Sie darauf, dass Sie protected $_mergeParent = 'YourParentClass'
um dies ordnungsgemäß durchführen zu lassen. Der Standardwert für diese Funktion ist 'AppController'
.
Quellcode: http://api.cakephp.org/2.4/source-class-Controller.html#294-301
Sicher, Sie können leicht subclass Controller in Cake.. und dann würden Sie typischerweise ihre Hook-Funktion wie "beforeFilter", "afterFilter", etc. nutzen, um Laufzeitlogik zu Ihren Controllern hinzuzufügen Ich setze typischerweise mindestens 1 abstrakten Controller zwischen Cakes Controller und den endgültigen Controller, den Sie in der Route konfigurieren.