Como mandar un mensaje al Guardar.

Hola espero que se encuentren bien, volviendo aquí al foro con una duda nueva, alguien me podría decir ojala me puedan ayudar, en como enviar un mensaje después de guardar, para cuando el usuario guarde, le aparezca un mensaje de Registro dado de alta exitosamente o "X" texto.

Le intente indicando un alert de javascript dentro de actionCreate y me marca un error en la cabecera lo indique de esta manera dentro de ese método.




if(isset($_POST['Etapa']))

		{

			$model->attributes=$_POST['Etapa'];

			if($model->save())

                        {

				echo "<script>alert('Registro almecenado correctamente')</script>";

                                $this->redirect(array('view','id'=>$model->id_etapa));

                        }

		}



Si se fijan pongo un echo y luego la instrucción de javascript para mandar un mensaje el registro si es almacenado, pero… al regresar a la pantalla de view me marca un error en la cabecera: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sspcp\protected\controllers\DocumentoController.php:85)

Ese error es el que me muestra pero no se mueve de Documentos/create pero si checo mi registro si yo le pongo desde el navegador en la parte donde tengo mi grid que en mi caso esta en index el registro si aparece almacenado, ojala me puedan ayudar para saber como puedo mandar un mensaje. Saludos…

puedes usar flash

en el controlador




      Yii::app()->user->setFlash('success',"Datos grabados correctamente!");



en la vista





<?php if(Yii::app()->user->hasFlash('success')):?>

    <div class="grabado_ok">

        <?php echo Yii::app()->user->getFlash('success'); ?>

    </div>

<?php endif; ?>



supongo que puedes poner el alert en lugar del mensaje

Como dice Horacio… y claramente explicado aqui

http://www.yiiframework.com/wiki/21/how-to-work-with-flash-messages/

Sale gracias dejenme leo el link que me dejaste Jack y probare la manera que Horacio me recomienda hacerlo, les comentare sobre lo mismo…

Utilice el código que me comentaron pero lo que necesito es que me abra una ventanita como tipo pop up donde este el mensaje, mas en especifico como la ventana que aparece cuando se le da clic en eliminar pero claro sin que tenga confirmación por el usuario, en si una ventana emergente como esa donde yo ponga el texto "Registro Almacenado".

Ya que de la otra forma usando el getFlash solo me aparece el texto pero un texto estatico sobre el diseño, espero me puedan ayudar se los agradeceria. Saludos…

Entonces te refieres a que no quieres que la pagina haga refresh ?? algo como una petición ajax entonces ??

Lo que me refiero es que cuando yo guarde me arroje una ventana emergente que diga "X" texto yo presione aceptar y me envie a view para que el usuario vea sus datos almacenados, como les comento eso yo lo hacia con un alert de javascript ponia el mensaje antes de guardar y lo mostraba cuando el usuario presionaba aceptar el proceso seguia insertaba en la tabla y mostraba los datos al usuario, esto lo he hecho con el fin de que hay usuarios que si les ponemos mensajes estaticos en la pantalla, osease un texto normal dentro del diseño no lo llegan a ver o que esten muy cansados y he tenido problemas por eso, por lo mismo termine usando esa ventana emergente como la que se encuentra en esta ruta http://grupojaprix.com/shaolin/Ventana.php, de la manera que ustedes me dijeron es correcta, pero no me abre una ventana con el texto, solo me pone un texto encima de mis registros en la parte de view como se muestra en la imágen que agrego, espero me puedan ayudar ya tenemos unos dias buscandole esa opción. Saludos…

En realidad no hay mucha diferencia de lo que posteamos como respuesta a lo q quieres hacer… la idea fue que vieras como escribir mensajes en el servidor y luego recuperarlos en el cliente… ahora al codigoque Horacio escribio o al enlace q puse solo le falta que muestre ese mensaje en una especie de ventana lightbox… que por cierto hay mucos wrappers en las extensiones de yii. Incluso puedes utilizar el componente cjuiDialog

Gracias por la contestación, de hecho estaba probando el registerScript, que si funciona de esa manera, pero me llama la atención en utilizar cjuiDialog, que me dieron esta página en el chat http://www.yiiframework.com/doc/api/1.1/CJuiDialog/ de la manera que lo realice fue de esta manera:


Yii::app()->clientScript->registerScript(1, 'alert("Registros Almacenados Correctamente")');

aunque me dijeron que no era muy profesional el usar el alert y de ahi me comentaron del que me comentas Jack, dejame investigar sobre el mismo, muchas gracias por la respuesta… y si tienes un ejemplo te agradeceria que me lo mostraras para ver su uso cuidate. Saludos…

Quizas este otro tutorial pueda servirte… o al menos darte una idea … es el uso de cJuiDialog para flashMessages

http://www.yiiframework.com/wiki/79/using-cjuidialog-to-display-flash-messages-in-dialogues/

Suerte