Maison > développement back-end > tutoriel php > Contrôleurs CakePHP

Contrôleurs CakePHP

PHPz
Libérer: 2024-09-10 17:25:17
original
870 Les gens l'ont consulté

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.

AppContrô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');
   }
}
Copier après la connexion

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.

Actions du contrôleur

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.

Exemple

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.
   }
}
Copier après la connexion

Comme vous pouvez le voir dans l'exemple ci-dessus, le RecipesContrôleurs CakePHP a 3 actions : Afficher, Partager et Rechercher.

Contrôleurs CakePHPion

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...)
Copier après la connexion

Le code suivant redirigera l'utilisateur vers l'action d'indexation du même contrôleur.

$this->setAction('index');
Copier après la connexion

L'exemple suivant montre l'utilisation de la méthode ci-dessus.

Exemple

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();
});
Copier après la connexion

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');
   }
}
Copier après la connexion

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>
Copier après la connexion

Exécutez l'exemple ci-dessus en visitant l'URL suivante.

http://localhost/cakephp4/redirect-controller

Sortie

Lors de l'exécution, vous recevrez le résultat suivant.

Contrôleurs CakePHP

Maintenant, visitez l'URL suivante : http://localhost/cakephp4/redirect-controller2

L'URL ci-dessus vous donnera le résultat suivant.

Contrôleurs CakePHP

Chargement des modèles

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)
Copier après la connexion

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.

Exemple

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');
Copier après la connexion

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!

Étiquettes associées:
source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal