CakePHP-Controller

PHPz
Freigeben: 2024-09-10 17:25:17
Original
828 Leute haben es durchsucht

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.

AppCakePHP-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');
   }
}
Nach dem Login kopieren

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.

CakePHP-Controller-Aktionen

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.

Beispiel

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.
   }
}
Nach dem Login kopieren

Wie Sie im obigen Beispiel sehen können, verfügt der RecipesCakePHP-Controller über drei Aktionen: Anzeigen, Teilen und Suchen.

Weiterleitung

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...)
Nach dem Login kopieren

Der folgende Code leitet den Benutzer zur Indexaktion desselben CakePHP-Controllers weiter.

$this->setAction('index');
Nach dem Login kopieren

Das folgende Beispiel zeigt die Verwendung der oben genannten Methode.

Beispiel

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();
});
Nach dem Login kopieren

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');
   }
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

Führen Sie das obige Beispiel aus, indem Sie die folgende URL besuchen.

http://localhost/cakephp4/redirect-controller

Ausgabe

Bei der Ausführung erhalten Sie die folgende Ausgabe.

CakePHP-Controller

Besuchen Sie nun die folgende URL: http://localhost/cakephp4/redirect-controller2

Die obige URL liefert die folgende Ausgabe.

CakePHP-Controller

Modelle laden

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)
Nach dem Login kopieren

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.

Beispiel

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');
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonCakePHP-Controller. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!