Вы можете сделать это с помощью простого метода javascript periodic refresh.
Нечто подобное в представлении, что имеет индикатор сообщений:
<?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;
}
Подробнее о timing methods in javascript.
Эта модель также называется опросом, есть и другие популярные методы, как длительного опрос и сервер толчке, который я не очень знаком, но вы должны проверить их тоже до принятия решения по шаблону ,
Надеюсь, что это поможет, попросите разъяснения, если они есть.
спасибо. url может просто быть: url: 'controller/action'. Поскольку я использую порт 82 для apache, поэтому было бы неудобно вручную модифицировать его для адаптации к новой конфигурации сервера. – Silentbang
потрясающий, хороший я тоже чему-то научился. –
О, я забыл. «controller/action» подходит только в том случае, если мы хотим реализовать это в представлении. мы должны контактировать строку, например url: \ "". CController :: createUrl ('контроллер/действие'). «\», – Silentbang