Mensagem de sucesso após o cadastro.

Olá pessoal, eu fiz um formulário aqui no Yii que é bem grande, e as pessoas que estão digitando precisam de processos rápidos, então fiz com que após o create o em vez de redirecionar a pagina para view do que acabou de cadastrar ele redireciona a pagina para a própria create.

Mas para ficar legal mesmo preciso que ao direcionar para a pagina create apareça uma mensagem ou como alert ou dentro de uma tag do html mesmo na pagina de create.

Alguém sabe como posso fazer isso?

Breno, opções são várias, mas sugiro passar uma variavel GET junto do redirect (?r=mod/create&created=true) e então no form adicionar o seguinte if


if ( Yii::app()->request->getQuery('created') == 'true' ) echo "Registro criado!";

Eu faço da seguinte forma:

1- Cria 2 botões no formulário <button name="botao" value="adicionar">Adicionar</button> e outro <button name="botao" value="adicionaroutro">Adicionar outro</button>

Controller




public function actionCreate() {

        $model = new Paciente;

        $telefone = new Telefone;


        // Uncomment the following line if AJAX validation is needed

        $this->performAjaxValidation($model);


        if (isset($_POST['Paciente'])) {           


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


            if ($model->save()) {


                ...


                if ($_POST["botao"] == "adicionar")

                    $this->redirect(array('index', 'alerta' => 'ok'));

                else if ($_POST["botao"] == "adicionaroutro")

                    $this->redirect(array('create', 'alerta' => 'ok'));

                else if ($_POST["botao"] == "adicionareditar")

                    $this->redirect(array('update', 'id' => $model->codpaciente, 'alerta' => 'ok'));

            }

        }


        $this->render('create', array(

            'model' => $model,

        ));

    }



Ai tu usa o exemplo Panurge:




if ( Yii::app()->request->getQuery('alerta') == 'ok' ) echo "Registro criado!";



Tem outra alternativa é usando o Yii::app()->user->setFlash(), antes do redirect.




Yii::app()->user->setFlash('success', 'Salvo com sucesso.');



View




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


<div class="flash-success">

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

</div>


<?php elseif (Yii::app()->user->hasFlash('error')): ?>


<div class="flash-error">

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

</div>


<?php endif; ?>



Até

Valeus, eu fiz da primeira forma pq precisava que fosse rápido no dia, mas agora vou fazer da segunda forma que parece ter uma interação melhor com usuário.