melomaniac
(Melomaniac2012)
1
Всем доброе утро. Есть 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,
но сообщение не выводится после сохранения вообще, ни с перезагрузкой страницы, ни без 
ineersa
(Ineersa)
2
Проще сделать без 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);
}'
Выбирайте то что вам больше нравится.
melomaniac
(Melomaniac2012)
3
Огромное вам спасибо, сейчас гляну 