重定向以与锚点

时间:2015-07-14 18:58:42

标签: yii2

我有一个带有标签菜单的视图文件'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);但我最终进入了一个重定向循环。

1 个答案:

答案 0 :(得分:6)

您可以重定向到其他操作。例如。我假设你有actionProfile来呈现用户的个人资料页面,actionDelete来删除它。因此,在actionDelete无法删除个人资料时,您可以使用 #tab_account 将用户重定向到个人资料页面。

public function actionDelete()
{   
    //your code for deleting
    } else {

        return $this->redirect(['profile', 'id' => $id, '#' => 'tab_account']);
    }
}