Le contrôleur comme son nom l'indique contrôle l'application. Il agit comme un pont entre les modèles et les vues. Les contrôleurs gèrent les données de demande, s'assurent que les modèles corrects sont appelés et que la bonne réponse ou la bonne vue est rendue.
Les méthodes de la classe des contrôleurs sont appelées actions. Chaque contrôleur suit les conventions de dénomination. Les noms de classe Contrôleurs CakePHP sont au pluriel, Camel Cased, et se terminent par Contrôleurs CakePHP — PostsContrôleurs CakePHP.
La classe AppContrôleurs CakePHP est la classe parent de tous les contrôleurs d'applications. Cette classe étend la classe Contrôleurs CakePHP de CakePHP. AppContrôleurs CakePHP est défini dans src/Contrôleurs CakePHP/AppContrôleurs CakePHP.php. Le fichier contient le code suivant.
<?php declare(strict_types=1); namespace App\Contrôleurs CakePHP; use Cake\Contrôleurs CakePHP\Contrôleurs CakePHP; class AppContrôleurs CakePHP extends Contrôleurs CakePHP { public function initialize(): void { parent::initialize(); $this->loadComponent('RequestHandler'); $this->loadComponent('Flash'); } }
AppContrôleurs CakePHP peut être utilisé pour charger des composants qui seront utilisés dans chaque contrôleur de votre application. Les attributs et méthodes créés dans AppContrôleurs CakePHP seront disponibles dans tous les contrôleurs qui l'étendent. La méthode initialize() sera invoquée à la fin du constructeur du contrôleur pour charger les composants.
Les méthodes de la classe contrôleur sont appelées Actions. Ces actions sont responsables de l’envoi d’une réponse appropriée au navigateur/utilisateur faisant la demande. La vue est rendue par le nom de l'action, c'est-à-dire le nom de la méthode dans le contrôleur.
class RecipesContrôleurs CakePHP extends AppContrôleurs CakePHP { 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. } }
Comme vous pouvez le voir dans l'exemple ci-dessus, le RecipesContrôleurs CakePHP a 3 actions : Afficher, Partager et Rechercher.
Pour rediriger un utilisateur vers une autre action du même contrôleur, on peut utiliser la méthode setAction(). Voici la syntaxe de la méthode setAction().
Cake\Contrôleurs CakePHP\Contrôleurs CakePHP::setAction($action, $args...)
Le code suivant redirigera l'utilisateur vers l'action d'indexation du même contrôleur.
$this->setAction('index');
L'exemple suivant montre l'utilisation de la méthode ci-dessus.
Apportez des modifications au fichier config/routes.php comme indiqué dans le programme suivant.
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'=>'Contrôleurs CakePHPs','action'=>'action1']); $builder->connect('/redirect-controller2',['controller'=>'Contrôleurs CakePHPs','action'=>'action2']); $builder->fallbacks(); });
Créez un fichier Contrôleurs CakePHPsContrôleurs CakePHP.php dans src/Contrôleurs CakePHP/Contrôleurs CakePHPsContrôleurs CakePHP.php. Copiez le code suivant dans le fichier du contrôleur.
src/Contrôleurs CakePHP/Contrôleurs CakePHPsContrôleurs CakePHP.php
<?php declare(strict_types=1); namespace App\Contrôleurs CakePHP; use Cake\Core\Configure; use Cake\Http\Exception\ForbiddenException; use Cake\Http\Exception\NotFoundException; use Cake\Http\Response; use Cake\View\Exception\MissingTemplateException; class Contrôleurs CakePHPsContrôleurs CakePHP extends AppContrôleurs CakePHP { public function action1() { } public function action2(){ echo "redirecting from action2"; $this->setAction('action1'); } }
Créez un répertoire Contrôleurs CakePHPs dans src/Template et sous ce répertoire, créez un fichier View appelé action1.php. Copiez le code suivant dans ce fichier.
src/Template/Contrôleurs CakePHPs/action1.php
<h1>This is an example of how to redirect within controller.</h1>
Exécutez l'exemple ci-dessus en visitant l'URL suivante.
http://localhost/cakephp4/redirect-controller
Lors de l'exécution, vous recevrez le résultat suivant.
Maintenant, visitez l'URL suivante : http://localhost/cakephp4/redirect-controller2
L'URL ci-dessus vous donnera le résultat suivant.
Dans CakePHP, un modèle peut être chargé à l'aide de la méthode loadModel(). Voici la syntaxe de la méthode loadModel() −
Cake\Contrôleurs CakePHP\Contrôleurs CakePHP::loadModel(string $modelClass, string $type)
Il y a deux arguments à la fonction ci-dessus comme suit −
Le premier argument est le nom de la classe modèle.
Le deuxième argument est le type de référentiel à charger.
Si vous souhaitez charger le modèle Articles dans un contrôleur, il peut être chargé en écrivant la ligne suivante dans l'action du contrôleur.
$this->loadModel('Articles');
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!