Home Programación Joomla Empezamos: Añadir un nuevo jugador o prenderle fuego

PostHeaderIcon Empezamos: Añadir un nuevo jugador o prenderle fuego

Usar puntuación: / 0
MaloBueno 

Nuestro primer paso, en el que ya empezaremos a ver código, será insertar datos en la base de datos desde el back end (más adelante veremos esa misma operación desde el front end). Trabajaremos con 4 archivos simultáneamente, el modelo, la vista y el controlador y además el view. Crearemos un formulario para poder ver los datos, los tomaremos para posteriormente insertarlo en la base de datos. Empezamos

 

Empieza en el view.html.php

 

En el display creamos los botones de arriba (insertar) que llamará a la función NuevoJugador

JToolBarHelper::addNew('NuevoJugador');

NuevoJugador es una función del controlador (controller.php)

En la función nuevoJugador hay que tener en cuenta que aparecerá el formulario para introducir los datos, por lo tanto tendrá una vista asociada (default_editar.php)

Lo primero será obtener la vista

$vista = $this->getView('tiposSeguros','html');

A continuación el modelo

$modelo = $this->getModel('tiposSeguros','gessegModel');

Por último asociar el modelo a la vista.

$vista->setModel($modelo, true);

Finalmente llamamos a la función insertarJugador que está en el view.html.php

$vista->insertar();

Esta función, como dijimos, se encuentra en el view.html.php. Simplemente se trata de una nueva vista con los botones que queremos tener (cada botón cumplirá una función) y la llamada al display para mostrar. Nótese que el display tiene en esta ocasión el parámetro editar, para diferenciar la vista del default.php que nos muestra la lista de jugadores. En el insertar del view.html.php tendremos que poner el siguiente código: El título, los botones y el display.

JToolBarHelper::title('NUEVO  JUGADOR);

JToolBarHelper::save('GuardaJugador');

JToolBarHelper::cancel('CancelarJugador');

parent::display('editar');

Vamos a ver a continuación el código de guardar y de cancelar, que es muy sencillo, y terminaremos viendo el código de default_editar.php

Este código se encuentra en el controlador (controller.php)

function GuardaJugador(){

En primer lugar, como siempre, nos conectamos al modelo

$modelo = $this->getModel(jugadores,'gessegModel');

Tomamos las variables que necesitaremos para definir bien el jugador: id (que no se mostrará) el nombre y si está publicado o no.

$id = JRequest::getVar('id');

$nombre = JRequest::getVar('nombre');

$publi = JRequest::getVar('publicado');

$publi es una variable que obtenemos de un formulario html (ver el código de default_editar.php). Esta variable en principio puede tener cualquier valor si no fue seleccionada (se trata de un checkbox)               y tendrá un 1 si fue seleccionada. Como puede tener cualquier valor si no fue seleccionada, nos aseguramos que si no es un 1 que sea un 0

if ($publi!=1) $publi=0;

En $correcto guardaremos lo que nos devuelve la función insertarJugador, a la que le pasaremos los datos que vamos a insertar y que nos devolverá verdadero o falso según se pudo insertar o no. Como esta función trabaja directamente con la base de datos se encontrará en el modelo.

$correcto = $modelo->InsertarJugador($id,$nombre,$publi);

Veremos esta función con detalle más adelante.

Finalmente, si se insertó redireccionaremos a la página principal de jugadores avisando de que se insertó correctamente, y si no se pudo insertar redireccionaremos a la misma página pero informando del error.

if ($correcto) $this->setRedirect('index.php?option=com_gesseg&view=jugadores', 'Jugador insertado correctamente');

else $this->setRedirect('index.php?option=com_gesseg&view=jugadores,'ERROR al insertar','ERROR');

}

Dejamos pendiente la Funcion insertarJugador del modelo. Como indicamos se encuentra en models/jugadores.php. Esta función en realidad es bastante sencilla.

function InsertarJugadores ($id,$nombre,$publi){

En primer lugar definimos $nuevo como una variable de una clase.

$nuevo = new stdClass();

A continuación asignamos los valores que vamos a insertar en la base de datos a la nueva variable que creamos. Los campos a los que se los asignamos deben llamarse exactamente igual que los campos de la base de datos.

$nuevo->nombre = $nombre;

$nuevo->publicado = $publi;

Joomla nos provee de una función propia que nos evita toda el trabajo de la conexión a la base de datos, creación del query y ejecución. Es la siguiente. Hay que pasarle la tabla y la variable anterior. Esta función nos devuelve verdadero si se inserta y falso si, por el motivo que sea, no se pudo insertar. Ese resultado lo guardamos en una variable y la devolvemos.

$result = JFactory::getDbo()->insertObject('#__gesseg_jugadores', $nuevo);

return $result;

}

La otra función que habíamos definido en el view.html.php dentro de la función Insertar era la funcion CancelarJugador. Esta función simplemente cancela la creación de un nuevo jugador, redireccionando a la página principal y avisando del motivo (cancelado por el usuario).

function CancelarJugadores(){

$this->setRedirect('index.php?option=com_gesseg&view=jugadores, 'Cancelado por el usuario');

}

Terminamos viendo la página default_editar.php. Esta página es una vista que nos muestra el formulario que servirá para recoger los nuevos datos, es decir, cuando queremos dar de alta un nuevo jugador, será mediante un formulario html. No insistiremos mucho en esta página pues se trata de código html. Al principio, como siempre, restringimos el acceso y cargamos una librería.

<?php

defined('_JEXEC') or die('Restricted access');

//Import filesystem libraries. Perhaps not necessary, but does not hurt

jimport('joomla.filesystem.file');

?>

<link rel="stylesheet" href="/<?php echo $dir_css; ?>edit_jugadores.css" type="text/css" />

<div id="colizq">

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

<label for="tipoSeg">Jugadores:</label>

<input type="text" name="nombre" id="nombre" maxlength="300" />

<br>

<label for="Publicado">Publicado:</label>

<input type="checkbox" name="publicado" value="1" checked>

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

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

</form>

</div>

 

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_counterHoy1454
mod_vvisit_counterAyer1493
mod_vvisit_counterEsta semana10753
mod_vvisit_counterLa semana pasada10142
mod_vvisit_counterEste mes27311
mod_vvisit_counterEl mes pasado44972
mod_vvisit_counterTodos los días1432881

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