Вы можете сделать это с помощью простого периодического обновления метода javascript.
Что-то подобное в представлении с индикатором сообщения:
<?php Yii::app()->clientScript->registerScript('autoupdate-div-inbox-update',
"setInterval(function(){
// do an ajax call to server to check for new messages
// using jquery's ajax method
$.ajax({
url: 'http://example.com/index.php?r=controller/action',// this is the url that will check for new messages for the current user
success: function(data) {// data is the data returned from the server
if(data){
// update your new message div
// you can show your red icon here
}
}
});
return false;
},1000);"
);
?>
Такпроисходит то, что метод setInterval выполняет функцию каждые 1000 миллисекунд, и функция проверяет наличие новых сообщений, используя ajax.
Если вы не знаете ajax в yii, проверьте следующее для действия контроллера:
public function actionMessages(){
// check for new messages in the db
$xyz = checkMessage();
// assuming checkMessage returns the number of new messages if any or false if none
// whatever we echo will be available to the javascript we wrote in the data variable
echo $xyz;
}
Подробнее о методах синхронизации в javascript .
Этот шаблон также называется опросом, существуют также другие популярные методы, такие как long polling и серверный push , с которым я не очень хорошо знаком, но вы должны также проверить их, прежде чем принимать решение по шаблону.
Надеюсь, это поможет, попросите разъяснений, если таковые имеются.