CakePHP - Ampliación de vistas

Muchas veces, al hacer páginas web, queremos repetir cierta parte de las páginas en otras páginas. CakePHP tiene tal facilidad por la cual uno puede extender la vista en otra vista y para esto, no necesitamos repetir el código nuevamente.

los extend() El método se utiliza para ampliar vistas en Viewarchivo. Este método toma un argumento, es decir, el nombre del archivo de vista con ruta. No use la extensión .ctp mientras proporciona el nombre del archivo Ver.

Ejemplo

Realice cambios en el archivo config / routes.php como se muestra en el siguiente programa.

config / route.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();
});

Crear un ExtendsController.php archivar en src/Controller/ExtendsController.php. Copie el siguiente código en el archivo del controlador.

src / Controller / ExtendsController.php

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

Crea un directorio Extends a src/Template y debajo de esa carpeta crea un Viewarchivo llamado header.php. Copie el siguiente código en ese archivo.

src / Plantilla / Extiende / header.php

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

Crea otro View debajo Extends directorio llamado index.php.Copie el siguiente código en ese archivo. Aquí, estamos ampliando la vista anterior.header.php.

src / Plantilla / Extiende / index.php

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

Ejecute el ejemplo anterior visitando la siguiente URL http: // localhost / cakephp4 / extend

Salida

Tras la ejecución, recibirá el siguiente resultado.