Home Programación Joomla Mostrar los datos de una vista sin plantearse la destrucción

PostHeaderIcon Mostrar los datos de una vista sin plantearse la destrucción

Usar puntuación: / 0
MaloBueno 

En el post anterior vimos cómo insertar datos en la base de datos desde el back end. Si estamos acostumbrados a trabajar en Joomla, sabremos que Joomla, al mostrar cualquier vista, no solo nos muestra los botones para poder trabajar con ellos sino también nos muestra en una lista de los datos insertados y asociados a esa lista. Por ejemplo, si estamos trabajando con los artículos de Joomla, al entrar en el gestor de artículos, no solo vemos los botones de nuevo, publicar, despublicar, borrar, etc, sino que además nos muestra debajo una lista de los artículos que en este momento hay insertados.

En el post anterior vimos como insertar jugadores en la base de datos. Anteriormente vimos que al entrar en el menú (que creamos con xml) de gesTorneo, en el submenú jugadores nos salía el botón de insertar. El objetivo de este post es ver el código para que junto a esos botones en la barra de herramientas nos aparezcan debajo todos los jugadores insertados en la base de datos.

 

En view.html.php en la función display.

 

Para que se muestren necesitamos lo primero cargar el modelo con la instrucción

$model = $this->getModel( 'jugadores' );

A continuación lo que tenemos que hacer es llamar a la función que muestra los datos de la base de datos

$this->jugadores = $model->getJugadores();

Esta función está en models/jugadores.php

Lo primero es obtener la conexión a la base de datos

$db =& $this->_db;

Comprobamos que jugadores está vacía, esto es, si no se ha hecho anteriormente ninguna consulta que se haya quedado almacenada en memoria. Obviamente es necesario inicializar _jugadores a nulo. Eso se hace a continuación de definir la clase de los jugadores

class gessegModeltiposSeguros extends JModel {

var $_tiposSeguros = null;

if( empty($this->_jugadores) ) {

Construimos la consulta a la base de datos. Recordar que la base de datos de joomla se referencia con #__. Establecemos también los límites de la consulta

$query = 'SELECT * FROM #__gesseg_jugadores';

$limitstart = $this->getState('limitstart');

$limit = $this->getState('limit');

Finalmente asociamos al campo _sucursales de la estructura con la lista

$this->_jugadores = $this->_getList($query,$limitstart,$limit);

}

Devolvemos la lista de jugadores

return $this->_jugadores;

Si todo ha funcionado como debería, ahora deberíamos tener en $this->tipoSeguros el resultado de la consulta ($query)

Solo nos queda mostrarlo. Lo haremos en default.php

No insistiremos mucho en el código html (buena idea para otro tutorial) así que agruparé las líneas de código

Primero definimos la restricción de acceso a Joomla y las dos variables que usaremos, la primera para la vista y la segunda para la tarea.

<?php defined('_JEXEC') or die('Restricted access');

$view = 'jugadores';

$task = 'editJugadores';

?>

A continuación definimos la cabecera. Sobre todo es importante el checkbox principal si queremos seleccionarlo todo. También es imprescindible que el form se llame adminForm

<form method="post" name="adminForm" id="adminForm">

<table class=adminlist>

<thead>

<!-- Encabezado de la lista de tipos de seguros -------------------------------------->

<tr>

<th width="20">

<input type="checkbox" name="toggle" value="" onclick="checkAll(<?php echo count($this->jugadores); ?>)"/>

En el count debemos poner el campo de $this que especificamos en el view.html.php

</th>

<th width="100" styke="text-align: left;">

</tr>

</thead>

continuación mostramos los datos de la base de datos que en la vista guardamos en su momento  en la propiedad $this->jugadores llamando a la función del modelo getJugadores(). Usamos un foreach (para cada elemento)

<!--  Mostramos los datos de la base de datos    --------------------------------->

<?php  

$i = 0;  

foreach($this->jugadores  as $jugador) {  

?>  

<tr>

Como en $this->jugadores hay muchos jugadores (todos los de la base de datos) usamos mejor $jugador para separarlo. En $jugador estará para cada elemento de la base de datos tantos campos como tenga la base de datos. Nos interesa el $id (que mantendremos oculto) y el $nombre (que será el que mostraremos y que irá asociado a su id para posteriormente editar si quisiéramos)

<td style="text-align: center;">

<?php echo JHTML::_('grid.id', $i, $jugador->id); ?>

</td> 

<td>

<?php echo "<a href='index.php?option=com_gesseg&task={$task}&cid[]={$jugador->id}'>{$jugador->nombre}</a>"; ?>

</td>  

</tr>  

<?php   $i++;   }   ?>  

</table>

Finalmente mostramos los campos ocultos, el de la tarea, el de las opciones, el de la vista y el del checkbox seleccionado.

<input type="hidden" name="task" value="">

<input type="hidden" name="option" value="com_gesseg">

<input type="hidden" name="boxchecked" value="0" /> 

<input type="hidden" name="view" value="<?php echo $view; ?>" />

</form>

 

Escribir un comentario


Código de seguridad
Refescar

PostHeaderIcon Más Comentado

PostHeaderIcon Últimos Comentarios

mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counterHoy1478
mod_vvisit_counterAyer1493
mod_vvisit_counterEsta semana10777
mod_vvisit_counterLa semana pasada10142
mod_vvisit_counterEste mes27335
mod_vvisit_counterEl mes pasado44972
mod_vvisit_counterTodos los días1432905

We have: 142 guests online
Hoy es: Dic 16, 2017