Frage

Ich habe zwei Controller, die den größten Teil ihres Code teilen (aber muss es sein, dennoch verschiedene Controller). Die offensichtliche Lösung (für mich zumindest) ist eine Klasse zu erstellen, und stellen Sie die beiden Regler von ihm erben. Die Sache ist ... wohin damit? Jetzt habe ich es in app_controller.php, aber es ist ein bisschen chaotisch es.

War es hilfreich?

Lösung

In Kuchen werden Komponenten verwendet Logik zu speichern, die durch mehrere Controller verwendet werden kann. Das Verzeichnis / app / controllers / components. Zum Beispiel, wenn Sie einig sharable Dienstprogramm Logik haben würden Sie ein Objekt namens UtilComponent und eine Datei in / app / Controler / Komponenten haben UtilComponent.php genannt.

<?php
class UtilComponent extends Object {
    function yourMethod($param) {
        // logic here.......

        return $param;
    }
}
?>

Dann in Ihren Controller-Klassen, würden Sie hinzufügen:

var $components = array('Util');

Dann rufen Sie die Methoden wie:

$this->Util->yourMethod($yourparam);

Weitere Informationen:

Dokumentation

Andere Tipps

Btw, wenn der Grund für „sie separate Steuerungen sein müssen“ die URLs, die Sie benötigen. Denken Sie daran, Sie können Routing verwenden:

Router::connect('/posts', array('controller' => 'posts', 'action' => 'index'));
Router::connect('/comments', array('controller' => 'posts', 'action' => 'list_comments'));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top