Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Cakephp verwendet Komponenten als Controller-Methoden

Eine Komponente ist nicht dasselbe wie ein Modell. Wenn Sie also Dinge auf diese Weise tun möchten, müssen Sie Ihre Action drehen Modell in eine Komponente.

Die Komponente würde in Controller/Component/ActionComponent.php gehen , und dann kann es wie folgt in Ihre Controller aufgenommen werden:

public $components = array(..., 'Action');

Die Logik in Ihrer Komponente kann der in einem Modell ähnlich sein, es gibt jedoch einige Unterschiede. Sie könnten beispielsweise immer noch ein Aktionsmodell haben, und die Komponente kann dieses für CRUD und andere Dinge verwenden. Sie müssen ClassRegistry::init() verwenden um ein Modell in Ihre Komponente zu laden.

Ich kann nicht wirklich erklären, wie Sie genau das tun, was Sie wollen, ein Grund dafür ist, dass ich nicht genau genug weiß, was Sie wollen. Ich habe jedoch schon früher meine eigene Komponente geschrieben, und Sie können sie verwenden Referenz, wenn Sie möchten - es ist möglicherweise komplizierter als Ihres, also können Sie sehen, wie man Methoden dafür schreibt.

Benutzerdefinierte ACL-Komponente

In diesem Beispiel kann ich, sobald es in einem Controller enthalten ist, einfach $this->CustomAcl->check() aufrufen wo immer ich mag.

Ich hoffe, das reicht zumindest für den Einstieg.