- Проверить авторизованный пользователь или нет?
- Перед выводом кнопки проверить добавлено выводимое объявление в базе(избранном) или нет в соответствии с результатом вывести кнопку с нужными стилями.
- По нажатию на кнопку, объявление будет добавлено в избранное - если его там нет, иначе (если есть) будет удалено из избранного.
- Так же о наличии в базе объявления или нет должны сигнализировать стили кнопки.
<?php
if(!Yii::app()->user->isGuest)
{
if($fav)
{
echo TbHtml::ajaxButton(TbHtml::icon(TbHtml::ICON_STAR), $this->createUrl('ad/AjaxAddFav'),
array('type'=>'POST',
'data'=> "js:{'id_ad': $model->id, 'id_user': 1 }",
'success'=>'js:function(string){if(string){$("#fav").toggleClass("btn-warning"); $("#fav > i").toggleClass("icon-star-empty icon-star");}}'),
['id' => 'fav',
'rel' => 'tooltip',
'data-trigger' => 'hover',
'data-title' => 'Добавить в избранное',
'class' => 'btn-warning',
]);
}
else
{
echo TbHtml::ajaxButton(TbHtml::icon(TbHtml::ICON_STAR_EMPTY), $this->createUrl('ad/AjaxAddFav'),
array('type'=>'POST',
'data'=> "js:{'id_ad': $model->id, 'id_user': 1 }",
'success'=>'js:function(string){if(string){$("#fav").toggleClass("btn-warning"); $("#fav > i").toggleClass("icon-star-empty icon-star");}}'),
['id' => 'fav',
'rel' => 'tooltip',
'data-trigger' => 'hover',
'data-title' => 'Добавить в избранное',
]);
}
}
?>
В контроллере
public function actionAjaxAddFav()
{
// accept only AJAX request (comment this when debugging)
if (!Yii::app()->request->isAjaxRequest) {
exit();
}
if (isset($_POST['id_ad']) && isset($_POST['id_user']))
{
$idAd = (int) $_POST['id_ad'];
$idUser = (int) $_POST['id_user'];
if(!NotepadController::recordExists($idAd, $idUser))
{
//CActiveRecord::model('Notepad')->insert();
$model = new Notepad;
$model->id_ad = $idAd;
$model->id_user = $idUser;
echo $model->save();
}
else
{
echo NotepadController::delRecord($idAd, $idUser);
}
}
}
/**
* Проверяет есть ли такое объявление в избранном?
* @param integer $idAd the ID of the Ad-объявления, $idUser - ID текущего пользователя
*/
public function recordExists($idAd, $idUser) {
return Notepad::model()->exists('id_ad = :id_ad and id_user = :id_user', [':id_ad' => $idAd,':id_user' => $idUser]);
}
public function delRecord($idAd, $idUser) {
return Notepad::model()->deleteAll('id_ad = :id_ad and id_user = :id_user', [':id_ad' => $idAd,':id_user' => $idUser]);
}
Комментариев нет:
Отправить комментарий