我有一个带有标签菜单的视图文件'profile.php'
<ul class="nav nav-tabs">
<li class="active">
<a href="#profile" data-toggle="tab">Information</a>
</li>
<li>
<a href="#password" data-toggle="tab">Change password</a>
</li>
<li>
<a href="#account" data-toggle="tab">Delete account</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane fade in active" id="profile">
... profile content
</div>
<div class="tab-pane fade" id="password">
... password content
</div>
<div class="tab-pane fade" id="account">
<?php $form = ActiveForm::begin([
'method' => 'post',
'action' => ['user/delete'],
]);
?>
<div class="col-lg-12">
<?php echo $form->field($model, 'delpassword')
->passwordInput(['maxlength' => true,'placeholder' => 'Password'])
->label(false)
?>
</div>
<div class="form-group">
<?php echo Html::submitButton('Delete', ['class' => 'custom-button']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
</div>
我可以通过在网址
的末尾添加#tab_account来转到帐户标签在UserController中我有这个动作:
public function actionDelete()
{
$id = Yii::$app->user->identity->user_id;
$model = $this->findModel($id);
$model->setscenario('delete_account');
if ($model->load(Yii::$app->request->post()) && $model->validate()) {
$model->delete();
return $this->goHome();
} else {
return $this->render('profile', [
'model' => $model,
]);
}
}
如果由于某种原因未删除该帐户,则该操作会在第一个选项卡(#tab_profile)上呈现profile.php。我想直接重定向到帐户标签。我试过返回$ this-&gt; refresh(#tab_account);但我最终进入了一个重定向循环。
答案 0 :(得分:6)
您可以重定向到其他操作。例如。我假设你有actionProfile
来呈现用户的个人资料页面,actionDelete
来删除它。因此,在actionDelete
无法删除个人资料时,您可以使用 #tab_account 将用户重定向到个人资料页面。
public function actionDelete()
{
//your code for deleting
} else {
return $this->redirect(['profile', 'id' => $id, '#' => 'tab_account']);
}
}