Diferencia entre revisiones de «Usando las Vistas»

De KumbiaPHP Framework Wiki
 
(No se muestran 3 ediciones intermedias de 2 usuarios)
(Sin diferencias)

Revisión actual del 12:10 10 may 2017

Vistas[editar]

En este tutorial se demostrarán las posibilidades que ofrece KumbiaPHP para el uso de las vistas, como deben ser creadas, su formato, diferentes tipos de resultados en la vistas, entre otras funcionalidades.


Creando una Vista[editar]

Las vistas en kumbiaphp son archivos con extensión .phtml , los cuales por convención llevan el mismo nombre que el nombre de la acción en el controlador, y dicha vista debe ir en una carpeta con igual nombre al de la clase controladora. con un ejemplo quedará mas claro:

Controlador usuario_controller.php[editar]
<?php

//archivo usuario_controller.php

class UsuarioController extends AppController
{
    public function hola()
    {
        //código de la acción
    }
}

El controlador llamado usuario_controller.php del cual nos interesa solo la parte antes del _controller.php, es decir la palabra usuario, el cual debe ser el nombre de la carpeta en views donde estarán alojadas cada una de las vistas (archivos .phtml) para esté controlador:

Vista hola.phtml[editar]
<h1>Soy la vista de la acción '''hola''' del controlador '''usuario_controller'''</h1>

<?php View::content(); //muy importante siempre colocar esta linea en alguna parte de la vista. ?>

Nuestra vista hola.phtml se encuentra en la carpeta views/usuario/hola.phtml donde views es la carpeta donde deben ir todos los archivos que representen vistas, la carpeta usuario es la que contiene las vistas para el controlador usuario_controller.php y el archivo hola.phtml es la vista correspondiente al metodo/acción hola de dicho controlador.


Dejar de usar una vista[editar]

Aveces tenemos acciones que no necesitan mostrar nada al usuario, si no que solo se encargan de realizar un proceso y redireccionan la petición a otra parte de la aplicación, un ejemplo de ello puede ser el método eliminar de un [CRUD] donde solo se realiza el proceso de eliminar un registro de una base de datos y luego se redirecciona la petición al método listar del controlador.

Ahora para decirle a una acción que no vamos a usar ninguna vista solo debemos llamar al método View::select(NULL); con esto le estamos diciendo al framework que no intente mostrar ninguna vista luego de ejecutar la acción del controlador:

Controlador usuario_controller.php[editar]
<?php

//archivo usuario_controller.php

class UsuarioController extends AppController
{
    public function hola()
    {
        View::select(NULL); //esta linea puede ir en cualquier parte de la vista.
        //código de la acción
    }
}


Usando una vista con nombre distinto al de la acción[editar]

Aveces tenemos vistas que son casi ó exactamente iguales para varias acciones en un controlador. un ejemplo de ello puede ser la vista crear y editar de un CRUD en una aplicación. Para estos caso puede ser útil reutilizar la misma vista en las dos acciónes.

En el siguiente ejemplo crearemos un controlador con dos acciones crear y editar las cuales mostrarán un formulario que será el mismo para los dos casos:

Vista crear.phtml[editar]
<h1><?php echo $titulo; //titulo es una variable que enviamos desde el controlador. ?></h1>

<?php View::content(); //muy importante siempre colocar esta linea en alguna parte de la vista. ?>

<?php echo Form::open(); ?>
<label>Nombre: <?php echo Form::text("form.nombre"); ?></label>
<label>Correo: <?php echo Form::text("form.correo"); ?></label>
<label>Sexo: <?php echo Form::select("form.sexo",array("Masculino","Femenino")); ?></label>
<?php echo Form::submit("Enviar Formulario"); ?> <?php echo Form::reset("Limpiar Datos"); ?>
<?php echo Form::close(); ?>

Creamos una vista llamada crear.phtml en views/usuario/crear.phtml la cual contiene un formulario con tres campos, como se puede observar el título para dicha vista es dinámico y viene dado por el valor que le asignemos en el controlador, se ha creado así para poder rehusar la vista en varias acciones.

Controlador usuario_controller.php[editar]
<?php

//archivo usuario_controller.php

class UsuarioController extends AppController
{
    public function crear()
    {
        $this->titulo = 'Crear Usuario'; //enviamos una variable para el título de la página
        //código de la acción
    }

    public function editar($id)
    {
        View::select("crear");
        $this->titulo = 'Editar Usuario'; //enviamos una variable para el título de la página
        //código de la acción
    }
}

Ahora tenemos el código del controlador usuarios_controller.php, en el cual hay dos acciónes una llamada crear y otra editar, la ultima recibe un parámetro, el cual es el id del registro a editar. En la vista editar hemos hecho uso del método View::select("crear"); con lo cual le estamos diciendo al framework que la vista que la acción editar usará será crear.phtml y no editar.phtml, ademas estamos asignando un título diferente en la variable.


Usando diferentes vistas en una misma Acción[editar]

Usando una vista para Ajax[editar]

Usando una vista para errores[editar]

Usando una vista para PDF[editar]

Templates[editar]

Cambiar de Template[editar]

Cambio para una acción del controlador[editar]

Cambio para todas las acciones de un controlador[editar]

<?php

//archivo usuario_controller.php

View::template("backend"); //este método siempre se ejecutará al cargar el controlador, para todas las acciones.

class UsuarioController extends AppController
{
    public function before_filter()
    {
        View::template("backend"); //acá tambien se puede colocar, ya que el before_filter siempre se ejecuta al cargar un controller.
    }
 
    public function hola()
    {
        //código de la acción
    }

    public function mensaje()
    {
        //código de la acción
    }

    public function crear()
    {
        //código de la acción
    }

    public function editar()
    {
        //código de la acción
    }

    public function eliminar()
    {
        View::template("otro_template");//este método usa un template especial
    }
}

No usar el Template[editar]


Realizado por: Manuel Aguirre (manuel_j555)