CakePHP - Exibir Elementos

Certas partes das páginas da web são repetidas em várias páginas da web, mas em locais diferentes. O CakePHP pode nos ajudar a reutilizar essas partes repetidas. Essas peças reutilizáveis ​​são chamadasElements - help box, extra menu, etc. Um elemento é basicamente um mini-view. Também podemos passar variáveis ​​em elementos.

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

Existem três argumentos para a função acima, como segue -

  • O primeiro argumento é o nome do arquivo de modelo no /src/Template/element/ pasta.

  • O segundo argumento é a matriz de dados a serem disponibilizados para a visualização renderizada.

  • O terceiro argumento é para a matriz de opções. por exemplo, cache.

Dos 3 argumentos, o primeiro é obrigatório, enquanto os restantes são opcionais.

Exemplo

Crie um arquivo de elemento em src/Template/element diretório chamado helloworld.php. Copie o código a seguir nesse arquivo.

src / Template / element / helloworld.php

<p>Hello World</p>

Crie uma pasta Elems em src/Template e sob esse diretório crie um Viewarquivo chamado index.php. Copie o código a seguir nesse arquivo.

src / Template / Elems / index.php

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

Faça alterações no config/routes.php arquivo conforme mostrado no programa a seguir.

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('/element-example',['controller'=>'Elems','action'=>'index']);
   $builder->fallbacks();
});

Criar um ElemsController.php arquivo em src/Controller/ElemsController.php. Copie o seguinte código no arquivo do controlador.

src / Controller / ElemsController.php

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

Execute o exemplo acima visitando a seguinte URL http: // localhost / cakephp4 / element-example

Resultado

Após a execução, o URL acima fornecerá a seguinte saída.