CakePHP - Ver elementos

Ciertas partes de las páginas web se repiten en varias páginas web, pero en diferentes ubicaciones. CakePHP puede ayudarnos a reutilizar estas partes repetidas. Estas piezas reutilizables se denominanElements - help box, extra menu, etc. Un elemento es básicamente un mini-view. También podemos pasar variables en elementos.

Cake\View\View::element(string $elementPath, array $data, array $options =[]

Hay tres argumentos para la función anterior de la siguiente manera:

  • El primer argumento es el nombre del archivo de plantilla en el /src/Template/element/ carpeta.

  • El segundo argumento es la matriz de datos que estarán disponibles para la vista renderizada.

  • El tercer argumento es para el conjunto de opciones. por ejemplo, caché.

De los 3 argumentos, el primero es obligatorio, mientras que el resto son opcionales.

Ejemplo

Cree un archivo de elemento en src/Template/element directorio llamado helloworld.php. Copie el siguiente código en ese archivo.

src / Plantilla / elemento / helloworld.php

<p>Hello World</p>

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

src / Template / Elems / index.php

Element Example: <?php echo $this->element('helloworld'); ?>

Realizar cambios en el config/routes.php archivo 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('/element-example',['controller'=>'Elems','action'=>'index']);
   $builder->fallbacks();
});

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

src / Controller / ElemsController.php

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

Ejecute el ejemplo anterior visitando la siguiente URL http: // localhost / cakephp4 / element-example

Salida

Tras la ejecución, la URL anterior le dará el siguiente resultado.