Cómo pasar mensaje de éxito ó error al ejecutar un método?

1,242 views
Skip to first unread message

Juan

unread,
Jul 24, 2010, 7:09:25 PM7/24/10
to CodeIgniter-spanish
Empiezo lanzando la pregunta grosso modo:

Cómo puedo hacer que al ejecutar el action de un formulario, digamos
[controlador] 'noticias/guardar' si los datos se insertaron con éxito
muestre un mensaje de confirmación y a continuación cargue el listado
de todas las noticias?

Si alguien necesita saber un poco más intentaré explicarme más en
detalle.

Os explico a donde he llegado después de trastear un poco. En el
controlador noticias/guardar tengo al final el siguiente código:
[..]
$datos_fichero = $this->upload->data();
$this->noticias_model->guarda_imagen_subida($datos_fichero);
$data['msgs'] = 'A nova foi insertada con éxito.';
$data['meta']['title'] = 'Nova insertada con éxito';
$data['noticias'] = $this->noticias_model->getAll();
$data['izquierda'] = 'noticias';
$this->load->view('theme', $data);

Antes no tenía esta linea $data['noticias'] = $this->noticias_model-
>getAll(); por lo que al cargar la vista 'noticia' daba un error por
que no le estaba pasando los datos necesarios ( $data['noticias'] ),
así que lo primero que se me ocurrió fue cargar las noticias de nuevo
a través del modelo.

Y en la vista THEME que carga a las demás, tengo el siguiente código
que si recibe $errores ó $msgs los muestra:

<!-- MSGS -->
<?php if( isset($errores) ) { ?>
<div id="error">
<p>
<?php echo $errores; ?>
</p>
</div>
<?php } ?>

<?php if( isset($msgs) ) { ?>
<div id="msg">
<p>
<?php echo $msgs; ?>
</p>
</div>
<?php } ?>
<!-- FIN MSGS -->


Bien, en principio se podría decir que funciona, sin embargo, presenta
al menos un par de errores.El primero y menos grave a mi modo de ver
es que se hace una llamada a $this->noticias_model->getAll(); que no
sería necesaria si redirijo el controlador a 'noticias/index' por lo
que hay código 'duplicado'. El segundo y más grave es que al no
redirigir el controlador, este se queda en 'noticias/guardar' y si se
recarga la página la noticia se inserta de nuevo.

Espero vuestros consejos para solucionar esta cuestión que me ha
surgido. Un saludo a todos.



<<P431i7o>>

unread,
Jul 25, 2010, 12:29:29 PM7/25/10
to codeignit...@googlegroups.com
hola, puedes guardar en flash data, cuando te has dado cuenta que fue satisfactorio

Flashdata

CodeIgniter supports "flashdata", or session data that will only be available for the next server request, and are then automatically cleared. These can be very useful, and are typically used for informational or status messages (for example: "record 2 deleted").

Note: Flash variables are prefaced with "flash_" so avoid this prefix in your own session names.

To add flashdata:

$this->session->set_flashdata('item', 'value');

You can also pass an array to set_flashdata(), in the same manner as set_userdata().

To read a flashdata variable:

$this->session->flashdata('item');

If you find that you need to preserve a flashdata variable through an additional request, you can do so using the keep_flashdata() function.

$this->session->keep_flashdata('item');


http://codeigniter.com/user_guide/libraries/sessions.html#flashdata


yo solia hacerlo asi.


Saludos Cordiales
---------------------------------------------
Pablo F.Ruiz Diaz Rios
Desarrollo Web con tecnologias de PHP, MySQL, AJAX (aunque tecnicamente ajax no es una nueva tecnologia,sino, la combinacion de varias)
messenger: http://tinymailto.com/p431i7omsn

PROTEGE TU RED:

Compartimos mensajes. Así que POR FAVOR, si vas a realizar un reenvío de este correo o cualquier otro recibido, BORRA mi dirección de correo y todas las direcciones de correo que aparezcan en los textos.

Proteje las direcciones de  tus amigos y la mía, enviando solo como CCO o BCC, Con copia oculta y NO PARA, ni CC: para evitar que usen nuestras direcciones y recibir correos no deseados, virus, spam etc.





--
---
Para anular la suscripción a este grupo, envía un mensaje a
codeigniter-spa...@googlegroups.com
Para obtener más opciones, visita este grupo en
http://groups.google.com/group/codeigniter-spanish?hl=es.

Juan

unread,
Jul 26, 2010, 10:00:55 AM7/26/10
to CodeIgniter-spanish
Fantástico! Gracias!
Reply all
Reply to author
Forward
0 new messages