2012-09-10 19 views
12

Estoy luchando con Flash Data en CodeIgniter.CodeIgniter Flash Data

Básicamente quiero:

agregar una categoría a un usuario de redirección de base de datos volver a una página muestran un mensaje emergente éxito "su categoría ha sido creada"

Hasta ahora puedo añadir la categoría con éxito a la base de datos y la entrada del usuario se valida correctamente, lo único es que no sé cómo crear el mensaje emergente de éxito. (No quiero cargar una vista de éxito), simplemente redirija a su origen y muestre un pequeño mensaje en la esquina superior o algo así.

¿Los datos de flash son el camino correcto a seguir?

Respuesta

31

En su controlador:

//add to db 
// load session library if not auto-loaded 
$this->session->set_flashdata('msg', 'Category added'); 
redirect('controller/method'); 

En la vista:

<script> 
// assumes you're using jQuery 
$(document).ready(function() { 
$('.confirm-div').hide(); 
<?php if($this->session->flashdata('msg')){ ?> 
$('.confirm-div').html('<?php echo $this->session->flashdata('msg'); ?>').show(); 
}); 
<?php } ?> 
</script> 
+0

Cheers Dude! Ahora puedo arreglar esto con CSS y más efectos de JavaScript, ¡Gracias! – Tom

0

Sí, simplemente verifique si los datos del flash están disponibles, si es así, muestre el mensaje, si no lo está, entonces no lo muestre. Tan sencillo como eso.

p.s. siempre debe hacer una redirección después de una solicitud POST.

0

de Flash data CodeIgniter utiliza PHPsession variables. Coloca un :old en el nombre de la sesión para que solo dure una llamada db. Su función y propósito es hacer lo que quiere hacer, así que sí, es una muy buena forma de abordar este tipo de cosas.

recordar si usted va a utilizar este debe incluir $this->session->library('session')

Si no está seguro de cómo utilizar efectivamente flash_data de lo que sugeriría lectura de la documentación que previamente vinculado.

$this->session->set_flashdata(
    'category_success', 
    'Your category has been created' 
); 
redirect(); //location 

echo $this->session->flashdata('category_success'); 
1

utilizando operador ternario:

ajuste de flash de datos:

$this->session->set_flashdata('insertproduct', 'Product added successfully'); 
$this->session->set_flashdata('deleteproduct','Delete added successfully'); 

Utilizando los datos de sesión de inflamación:

<?php if($this->session->flashdata('insertproduct')):echo $this->session->flashdata('insert');endif; ?><br/> 
<?php if($this->session->flashdata('delete')): echo $this->session->flashdata('delete'); endif;?> 
4

Tu puede realizar diferentes mensaje de sesión depende de lo que pase a vista desde su controlador. Noté que estoy usando Bootstrap como mi backbone CSS.

En vista,

Para el caso de éxito,

<?php if ($this->session->flashdata('category_success')) { ?> 
     <div class="alert alert-success"> <?= $this->session->flashdata('category_success') ?> </div> 
    <?php } ?> 

Para el caso de error,

<?php if ($this->session->flashdata('category_error')) { ?> 
    <div class="alert alert-danger"> <?= $this->session->flashdata('category_error') ?> </div> 
<?php } ?> 

En controlador,

Para el caso de éxito,

$this->session->set_flashdata('category_success', 'Success message.'); 
redirect("To your view"); 

Para el caso de error,

$this->session->set_flashdata('category_error', 'Error message.'); 
redirect("To your view"); 

Para mayor referencia se puede visitar: http://www.codeigniter.com/userguide2/libraries/sessions.html

0

puede probar esta -

controlador:

$this->session->set_flashdata('success', 'Success Message...'); 

    OR 

    $this->session->set_flashdata('error', 'Error Message...'); 

    OR 

    $this->session->set_flashdata('warning', 'Warning Message...'); 

    OR 

    $this->session->set_flashdata('info', 'Info Message...'); 

Vista:

<?php if($this->session->flashdata('success')){ ?> 
     <div class="alert alert-success"> 
      <a href="#" class="close" data-dismiss="alert">&times;</a> 
      <strong>Success!</strong> <?php echo $this->session->flashdata('success'); ?> 
     </div> 

    <?php } else if($this->session->flashdata('error')){ ?> 

     <div class="alert alert-danger"> 
      <a href="#" class="close" data-dismiss="alert">&times;</a> 
      <strong>Error!</strong> <?php echo $this->session->flashdata('error'); ?> 
     </div> 

    <?php } else if($this->session->flashdata('warning')){ ?> 

     <div class="alert alert-warning"> 
      <a href="#" class="close" data-dismiss="alert">&times;</a> 
      <strong>Warning!</strong> <?php echo $this->session->flashdata('warning'); ?> 
     </div> 

    <?php } else if($this->session->flashdata('info')){ ?> 

     <div class="alert alert-info"> 
      <a href="#" class="close" data-dismiss="alert">&times;</a> 
      <strong>Info!</strong> <?php echo $this->session->flashdata('info'); ?> 
     </div> 
    <?php } ?>