Der CakePHP-Controller steuert, wie der Name schon sagt, die Anwendung. Es fungiert wie eine Brücke zwischen Modellen und Ansichten. CakePHP-Controller verarbeiten Anforderungsdaten und stellen sicher, dass die richtigen Modelle aufgerufen und die richtige Antwort oder Ansicht gerendert werden.
Methoden in der CakePHP-Controller-Klasse werden Aktionen genannt. Jeder CakePHP-Controller folgt Namenskonventionen. Die CakePHP-Controller-Klassennamen haben die Pluralform Camel Cased und enden auf CakePHP-Controller – PostsCakePHP-Controller.
Die Klasse AppConttroller ist die übergeordnete Klasse aller Anwendungscontroller. Diese Klasse erweitert die CakePHP-Controller-Klasse von CakePHP. AppCakePHP-Controller ist unter src/CakePHP-Controller/AppCakePHP-Controller.php definiert. Die Datei enthält den folgenden Code.
<?php declare(strict_types=1); namespace App\CakePHP-Controller; use Cake\CakePHP-Controller\CakePHP-Controller; class AppCakePHP-Controller extends CakePHP-Controller { public function initialize(): void { parent::initialize(); $this->loadComponent('RequestHandler'); $this->loadComponent('Flash'); } }
AppCakePHP-Controller kann zum Laden von Komponenten verwendet werden, die in jedem CakePHP-Controller Ihrer Anwendung verwendet werden. Die in AppCakePHP-Controller erstellten Attribute und Methoden sind in allen CakePHP-Controllern verfügbar, die ihn erweitern. Die Methode initialize() wird am Ende des CakePHP-Controller-Konstruktors aufgerufen, um Komponenten zu laden.
Die Methoden in der CakePHP-Controller-Klasse werden Aktionen genannt. Diese Aktionen sind dafür verantwortlich, dass dem Browser/Benutzer, der die Anfrage stellt, eine angemessene Antwort gesendet wird. Die Ansicht wird durch den Namen der Aktion gerendert, d. h. durch den Namen der Methode im CakePHP-Controller.
class RecipesCakePHP-Controller extends AppCakePHP-Controller { public function view($id) { // Action logic goes here. } public function share($customerId, $recipeId) { // Action logic goes here. } public function search($query) { // Action logic goes here. } }
Wie Sie im obigen Beispiel sehen können, verfügt der RecipesCakePHP-Controller über drei Aktionen: Anzeigen, Teilen und Suchen.
Um einen Benutzer zu einer anderen Aktion desselben CakePHP-Controllers umzuleiten, können wir die Methode setAction() verwenden. Das Folgende ist die Syntax für die setAction()-Methode.
Cake\CakePHP-Controller\CakePHP-Controller::setAction($action, $args...)
Der folgende Code leitet den Benutzer zur Indexaktion desselben CakePHP-Controllers weiter.
$this->setAction('index');
Das folgende Beispiel zeigt die Verwendung der oben genannten Methode.
Nehmen Sie Änderungen in der Datei config/routes.php vor, wie im folgenden Programm gezeigt.
config/routes.php
<?php use Cake\Http\Middleware\CsrfProtectionMiddleware; use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/', function (RouteBuilder $builder) { // Register scoped middleware for in scopes. $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([ 'httpOnly' => true, ])); $builder->applyMiddleware('csrf'); $builder->connect('/redirect-controller',['controller'=>'CakePHP-Controllers','action'=>'action1']); $builder->connect('/redirect-controller2',['controller'=>'CakePHP-Controllers','action'=>'action2']); $builder->fallbacks(); });
Erstellen Sie eine CakePHP-ControllersCakePHP-Controller.php-Datei unter src/CakePHP-Controller/CakePHP-ControllersCakePHP-Controller.php. Kopieren Sie den folgenden Code in die CakePHP-Controller-Datei.
src/CakePHP-Controller/CakePHP-ControllersCakePHP-Controller.php
<?php declare(strict_types=1); namespace App\CakePHP-Controller; use Cake\Core\Configure; use Cake\Http\Exception\ForbiddenException; use Cake\Http\Exception\NotFoundException; use Cake\Http\Response; use Cake\View\Exception\MissingTemplateException; class CakePHP-ControllersCakePHP-Controller extends AppCakePHP-Controller { public function action1() { } public function action2(){ echo "redirecting from action2"; $this->setAction('action1'); } }
Erstellen Sie ein Verzeichnis CakePHP-Controllers unter src/Template und erstellen Sie unter diesem Verzeichnis eine View-Datei mit dem Namen action1.php. Kopieren Sie den folgenden Code in diese Datei.
src/Template/CakePHP-Controllers/action1.php
<h1>This is an example of how to redirect within controller.</h1>
Führen Sie das obige Beispiel aus, indem Sie die folgende URL besuchen.
http://localhost/cakephp4/redirect-controller
Bei der Ausführung erhalten Sie die folgende Ausgabe.
Besuchen Sie nun die folgende URL: http://localhost/cakephp4/redirect-controller2
Die obige URL liefert die folgende Ausgabe.
In CakePHP kann ein Modell mit der Methode loadModel() geladen werden. Im Folgenden finden Sie die Syntax für die Methode loadModel() −
Cake\CakePHP-Controller\CakePHP-Controller::loadModel(string $modelClass, string $type)
Es gibt zwei Argumente für die obige Funktion wie folgt: −
Das erste Argument ist der Name der Modellklasse.
Das zweite Argument ist der Typ des zu ladenden Repositorys.
Wenn Sie das Artikelmodell in einen CakePHP-Controller laden möchten, können Sie es laden, indem Sie die folgende Zeile in die Aktion des CakePHP-Controllers schreiben.
$this->loadModel('Articles');
Das obige ist der detaillierte Inhalt vonCakePHP-Controller. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!