CakePHP - Extension des vues

Plusieurs fois, lors de la création de pages Web, nous voulons répéter certaines parties de pages dans d'autres pages. CakePHP a une telle facilité par laquelle on peut étendre la vue dans une autre vue et pour cela, nous n'avons pas besoin de répéter le code.

le extend() est utilisée pour étendre les vues dans Viewfichier. Cette méthode prend un argument, c'est-à-dire le nom du fichier de vue avec le chemin. N'utilisez pas l'extension .ctp lorsque vous fournissez le nom du fichier View.

Exemple

Modifiez le 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) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   $builder->connect('extend',['controller'=>'Extends','action'=>'index']);
   $builder->fallbacks();
});

Créé un ExtendsController.php déposer à src/Controller/ExtendsController.php. Copiez le code suivant dans le fichier du contrôleur.

src / Controller / ExtendsController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   class ExtendsController extends AppController{
      public function index(){
      }
   }
?>

Créer un annuaire Extends à src/Template et sous ce dossier, créez un Viewfichier appelé header.php. Copiez le code suivant dans ce fichier.

src / Template / Extends / header.php

<div align="center">
   <h1>Common Header</h1>
</div>
<?= $this->fetch('content') ?>

Créer un autre View en dessous de Extends répertoire appelé index.php.Copiez le code suivant dans ce fichier. Ici, nous étendons la vue ci-dessusheader.php.

src / Template / Extends / index.php

<?php $this->extend('header'); ?>
This is an example of extending view.

Exécutez l'exemple ci-dessus en visitant l'URL suivante http: // localhost / cakephp4 / extend

Production

Lors de l'exécution, vous recevrez la sortie suivante.