⊗ppMVDFmCn 28 of 35 menu

Controladores en tu propio framework MVC en PHP

Como ya sabes, todos los controladores de nuestro framework tienen el método render, que necesita ser llamado para enviar datos a la vista. Este método es heredado por nuestros controladores personalizados desde la clase padre Controller, ubicada en el núcleo. Hagamos esta clase:

<?php namespace Core; class Controller { protected function render($view, $data) { } } ?>

Como puedes ver, el método render recibe como parámetro el nombre de la vista y los datos para mostrar. Que este método retorne un objeto de una clase especial Page, en la cual estará contenida la información sobre la vista de datos de la acción del controlador. En esta clase estará contenido el nombre de la vista, los datos, así como el título de la página y el nombre del archivo con el diseño del sitio:

<?php namespace Core; class Page { private $layout; private $title; private $view; private $data; public function __construct($layout, $title, $view, $data) { $this->layout = $layout; $this->title = $title; $this->view = $view; $this->data = $data; } public function __get($property) { return $this->$property; } } ?>

Entonces el código de nuestro método render se verá así:

<?php namespace Core; class Controller { protected $layout = 'default'; protected function render($view, $data) { return new Page($this->layout, $this->title, $view, $data); } } ?>

Explicaré lo que sucede aquí. El nombre de la vista y los datos llegan como parámetros del método. Sin embargo, en el controlador personalizado también se establece el título de la página - mediante la escritura de la propiedad title. Significa, que en $this->title estará contenido el título, que pasaremos al constructor de la clase Page.

También hay matices con el diseño. Como sabes, nuestro framework utiliza un diseño del archivo default.php. En realidad, cada acción puede tener otro diseño. Para esto es necesario en la propia acción en la propiedad layout escribir otro nombre de diseño.

Cómo se logra esto: nuestro controlador padre tiene la propiedad layout, por defecto con el valor 'default.php'. Este será el diseño por defecto. Sin embargo, si la acción del controlador personalizado redefine el valor de la propiedad layout, entonces el diseño será otro.

Copia el código de mi clase Controller y colócalo en el archivo /core/Controller.php.

Copia el código de mi clase Page y colócalo en el archivo /core/Page.php.

Español
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Usamos cookies para el funcionamiento del sitio, análisis y personalización. El procesamiento de datos se realiza de acuerdo con la Política de privacidad.
aceptar todas configurar rechazar