Php YiiFramwork清除当前渲染数据并渲染新数据,而不是重定向
我想问一下,是否存在这样的情况,我可以清除当前呈现的页面,然后使用一组新布局重新呈现?我知道我可以通过调用重定向来实现这一点,但我必须创建另一组操作来处理1个布局。有没有一种方法可以让我一次完成?这是我目前的做法,但我似乎无法清除以前的布局并渲染另一组新布局Php YiiFramwork清除当前渲染数据并渲染新数据,而不是重定向,php,redirect,yii,render,Php,Redirect,Yii,Render,我想问一下,是否存在这样的情况,我可以清除当前呈现的页面,然后使用一组新布局重新呈现?我知道我可以通过调用重定向来实现这一点,但我必须创建另一组操作来处理1个布局。有没有一种方法可以让我一次完成?这是我目前的做法,但我似乎无法清除以前的布局并渲染另一组新布局 /** * Change a user's password * @param int $id Owner's id * */ public function actionChngPassword($id) { $this-
/**
* Change a user's password
* @param int $id Owner's id
*
*/
public function actionChngPassword($id)
{
$this->pageTitle = 'Change Password';
$model=Users::model()->findByPk($id);
$model->scenario = 'chngPwd';
$this->performAjaxValidation($model);
$returnUrl = Yii::app()->homeUrl;
if(isset($_POST['Users'])){
$model->attributes = $_POST['Users'];
if($model->validate()){
$model->scenario = "";
$ip = Users::getRealIp();
$time = date('d-m-Y H:i:s');
$name = $model->usrname;
$model->old_pwd = $model->pwd;
$model->pwd = CPasswordHelper::hashPassword($model->newpwd);
$model->pw_change_on = $time = date('d-m-Y H:i:s');
$model->save();
// Send email noti to user
$revert_link= $this->createAbsoluteUrl('users/revertPassword', array('id' => $model->user_id, 'pwhash' => urlencode($model->pwd)));
ob_start();
$INC_DIR = UrlMgmt::getBaseAbsoluteUrl() . "/protected/views/users/mailtemplate/";
include($INC_DIR . "pwChange_email.php");
$view = ob_get_contents();
ob_end_clean();
Mailer::sendMail('Viralenz Member Accounts Management', $model->email_addr, 'Viralenz Password Changed!', $view);
Yii::app()->clientScript->registerMetaTag("3;url={$returnUrl}", null, 'refresh');
$this->render('msg_pwchange',array('c'=>"change"));
}
}
$this->render('chngPassword', array('model' => $model));
}
注意到附加在顶部的第二个渲染部分。。。我希望它清除所有并重新渲染一组新布局
有没有其他方法可以代替重定向到另一个操作?如果您使用ajax进行渲染,可以将视图“chngPassword”替换为“msg_pwchange”,而无需重定向到其他操作。 为“chngPassword”的外部元素提供一个id(例如:response_id),并在单击“Change”按钮时进行ajax调用,如下所示:
$.ajax({
type: 'POST',
data: {...provide here...},
url: '<?php echo Yii::app()->getbaseurl(TRUE). '/controller_id/ChngPassword' ?>',
success: function(str) {
$('#response_id').html(str);
}
});
-----自定义代码-----------
-----自定义代码------
if(isset($_POST['Users'])){
}
函数renderPartial()只返回特定文件的视图,而不返回布局。现在,我们可以用新视图(ajax响应)替换以前的视图。如果使用ajax进行渲染,则可以将视图“chngPassword”替换为“msg_pwchange”,而无需重定向到其他操作。 为“chngPassword”的外部元素提供一个id(例如:response_id),并在单击“Change”按钮时进行ajax调用,如下所示:
$.ajax({
type: 'POST',
data: {...provide here...},
url: '<?php echo Yii::app()->getbaseurl(TRUE). '/controller_id/ChngPassword' ?>',
success: function(str) {
$('#response_id').html(str);
}
});
-----自定义代码-----------
-----自定义代码------
if(isset($_POST['Users'])){
}
函数renderPartial()只返回特定文件的视图,而不返回布局。现在,我们可以用新视图替换以前的视图(ajax响应)。可能您可以尝试使用ajax来呈现新页面!也许你可以尝试ajax来呈现新页面!