Yii Framework Forum: Ajax+Setflash - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Ajax+Setflash Rate Topic: -----

#1 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 16 July 2013 - 11:38 PM

Всем доброе утро. Есть 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,
но сообщение не выводится после сохранения вообще, ни с перезагрузкой страницы, ни без :(
0

#2 User is offline   ineersa 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 272
  • Joined: 15-April 13
  • Location:Ukraine

Posted 17 July 2013 - 01:53 AM

Проще сделать без 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);
}'


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

#3 User is offline   melomaniac 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 182
  • Joined: 14-January 13

Posted 17 July 2013 - 12:04 PM

View Postineersa, on 17 July 2013 - 01:53 AM, said:

Проще сделать без 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);
}'


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


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

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users