Ajax+Setflash

Всем доброе утро. Есть Ajax ссылка и экшн:




//В представлении:

echo CHtml::ajaxLink(

			Yii::app()->createUrl( '/product/addtowishlist' ),

			array( 'type' => 'POST',

			'data' => array( 'product_id' => $latest['id'], 'user_id' => Yii::app()->user->id ),

			'cache'=>'false'

			),

			array(

			'class' => "btn",

			)

			);




//В контроллере

public function actionAddtowishlist()

{

    $wishlist=new Wishlist;

    $wishlist->product_id = $_POST['product_id'];

    $wishlist->user_id = $_POST['user_id'];

        if ($wishlist->save())

        {

            Yii::app()->setFlash('success', "Data saved!");

        }

}



Вообщем как вы поняли хочу после ajax запроса вывести сообщение, вроде "Данные сохранены". В базу все отлично пишется через ajax,

но сообщение не выводится после сохранения вообще, ни с перезагрузкой страницы, ни без :(

Проще сделать без flash-сообщений.




//В представлении:

echo CHtml::ajaxLink(

                        Yii::app()->createUrl( '/product/addtowishlist' ),

                        array( 'type' => 'POST',

                        'data' => array( 'product_id' => $latest['id'], 'user_id' => Yii::app()->user->id ),

                        'cache'=>'false'

                        'success'=>'js:function(data){

                        if (!isemptyobject(data))

                          //do smthing. success message => data.success

                        }'

                        ),

                        array(

                        'class' => "btn",

                        )

                        );




//В контроллере

public function actionAddtowishlist()

{

    $wishlist=new Wishlist;

    $wishlist->product_id = $_POST['product_id'];

    $wishlist->user_id = $_POST['user_id'];

        if ($wishlist->save())

        {

            echo CJSON::encode('success'=>'Data saved');

            Yii::app()->end();

        }

}



Что-то подобное этому будет работать 100% (у самого так).

Этот способ не yii-way, стандартный:




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

    <div class="info">

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

    </div>

<?php endif; ?>



В данном случае нужно добавить отображение данного div в success аякса.

Есть еще вариант извращение, что-то вроде




'success'=>'js:function(data){

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

$('#myinfodiv').append(message);

}'



Выбирайте то что вам больше нравится.

Огромное вам спасибо, сейчас гляну :)