Las plantillas en Yii Framework así como en otros frameworks, nos permiten definir una pagina maestra, común a todas las páginas, que tenga elementos que necesitan todas las paginas por ejemplo un encabezado, los ficheros css y js, el pie de página, etc. En ella se “imprimen” las vistas de nuestra aplicación.
Las plantillas se crean en el directorio protected/views/layouts/
La plantilla por defecto utilizada por Yii está definida en el fichero protected/components/Controller.php y se puede cambiar sin mayor problema.
Veamos como puede estar compuesta una plantilla:
protected/views/layouts/plantilla.php
<!DOCTYPE html> <html xml:lang="es" lang="es"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="language" content="es" /> <title><?php echo CHtml::encode($this->pageTitle); ?></title> <!--jQuery 2.1--> <script src="<?php echo Yii::app()->request->baseUrl;?> /js/jquery.min.js"></script> <!--Twitter Bootstrap 3--> <link rel="stylesheet" href="<?php echo Yii::app()->request->baseUrl; ?> /bootstrap/css/bootstrap.yeti.min.css"> <script src="<?php echo Yii::app()->request->baseUrl; ?> /bootstrap/js/bootstrap.min.js"></script> </head> <body> <div class="container" id="page"> <nav class="navbar navbar-default" role="navigation"> <!--Menú de navegación--> </nav> <?php //Cargamos el contenido o vista echo $content; ?> <div class="clear"></div> <div id="footer" class="alert alert-info"> Copyright © <?php echo date('Y'); ?> by My Company. All Rights Reserved. <?php echo Yii::powered(); ?> </div> </div> </body> </html>
Podemos elegir la plantilla que va a utilizar un controlador o sus métodos de la siguiente manera:
<?php //Controlador class HolaMundoController extends Controller{ //Indicamos que este controlador utilizará la siguiente plantilla public $layout="//layouts/plantilla"; //Método action public function actionIndex(){ $hola="Hola mundo con Yii Framework!!! Soy Victor Robles"; //Renderizamos la vista llamada index y le pasamos el parametro hola $this->render('index',array( "hola"=>$hola )); } public function actionPruebas(){ //Le decimos que este método va a utilizar la plantilla main $this->layout="//layouts/main"; $bruce = "Plantillas en Yii Framework Victor Robles"; $this->render('city',array( "hola"=>$bruce )); } } ?>
Ahora si vamos al controlador holamundo, nos aparece la plantilla que le hemos asignado.
Si cambiamos al método pruebas, aparece con la plantilla que se le ha asignado.