Personalizar layout

Hola comunidad, estoy desarrollando una aplicación sin la utilización de ningún motor de plantilla y necesito mostrar en el layout imágenes que van a ser subidas por el Usuario, como puedo hacer para que estas se muestren (tengo el controlador que hace la subida de las imágenes y demás, solo necesito una función que pueda ser llamada desde el layout o algo por el estilo).

Según tengo entendido en la variable “$content” se muestra todo el contenido que es mostrado por cada vista, pero lo que quiero agregar, va a estar presente en todas las vistas del proyecto y no quiero repetir código. Espero su ayuda.

Buenas.

Hablando de Yii1, tienes el siguiente directorio:

  • webroot/protected/views/layouts

Aquí tendrás 3 arquivos:

  • column1.php

  • column2.php

  • main.php

En cualquiera de ellas podrías añadir tus imágenes.

Ten en cuenta que si lo añades en el main.php, lo verás páginas.

Si lo añades en los column, depende de que layout utilices en tus controladores. En tus controladores tendrás algo como esto:


public $layout='//layouts/column2';

Y puedes poner diferentes layouts (columns) para cada controlador. Entonces si eliges añadirlo en el main, listo. Si lo decides añadir en los column, tendrás que añadirlo en todos los column que utilices en tu proyecto.

Un saludo.

Estoy trabajando con Yii 2.0.11,lo que necesito es unas imagenes que se van a mostrar en el layaout ,puedan ser cambiadas por el usuario.

Buenas.

En Yii 2 creo q el sistema de layouts seguirá siendo el mismo.

Que un usuario pueda cambiarlas no tiene nada que ver. Eso tendrás que hacerlo utilizando el modelo y controlador correspondientes.

Todo lo que quieras meter como común en los layouts, tienes que escribirlo en los layouts.

Un saludo.

Hola, en yii2 es similar tambien.

en views/layouts/main.php esta el layout principal, el que toma por defecto al instalar yii.

En ese archivo tienes disponibles las variables del objeto View (esto es distinto a Yii1), es decir,

$this <-- es el objeto View

$this->context <-- es el controlador

Si tus controladores extienden de un controller generico, puedes poner hay la funcion que se llame desde el layout.

La otra posibilidad es extender el objeto View y poner hay la funcion.

Saludos