在我的网站中,我有两个帐户,一个用于管理员,一个用于用户。管理员可以编辑,创建和删除。我实现的所有这些功能都运行正常但现在当我在另一个浏览器中打开我的用户并且我在另一个浏览器中执行删除功能时,它不会自动更新到用户站点。我需要在用户站点中手动刷新我的页面以查看当前记录。
只要管理员做出修改,自动更新/自动刷新用户页面的方法是什么?
以下是我执行删除功能的控制器中的代码。请让我知道我可以在哪里调整代码以自动刷新用户站点中的内容。
这是访问规则
public function accessRules()
{
return array(
array('allow', // allow all users to perform 'index' and 'view' actions
'actions'=>array('index'),
'users'=>array('*'),
),
array('allow',
'actions'=>array('view','user'),
'users'=>array('@'),
),
array('allow', // allow admin user to perform 'admin' and 'delete' actions
'actions'=>array('create','update', 'admin','delete'),
'expression' => 'Yii::app()->user->isAdmin()'
),
array('deny', // deny all users
'users'=>array('*'),
),
);
}
这是删除功能
public function actionDelete($id)
{
if(Yii::app()->request->isPostRequest)
{
// we only allow deletion via POST request
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
else
throw new CHttpException(400,'Invalid request. Please do not repeat this request again.');
}
答案 0 :(得分:0)
我假设你熟悉在javascript中使用ajax。如果没有,请查看this.
1.现在你可以在你的JavaScript中设置一个定时器,每隔10秒就会调用一次。在这个javascript代码中写下ajax调用。
var myVar=setInterval(function(){myTimer()},1000);
function myTimer()
{
//ajax call here
}
.2创建一个这个ajax函数将调用的控制器。说检查标志
public function actionCheckFlag()
{
//check timestamp here, calculate timer difference between current time and the time of change in Db.You have to make timestamp with the each Db table.
}
在上面的动作中设置一些标准让我们说Db表的当前时间和更改时间之间的差异是1分钟然后返回一些标志。基于此标志刷新更新一些特定元素。让我们说更新gridView。或者您可以像
那样重新加载整个页面location.reload();