Q: Yii2整合Rbac和按钮判别

Q: Yii2 integrating Rbac and button discrimination

我正在 php 使用 Yii2 开发一个网站,我遇到了 Rbac 问题。我遵循了官方指南,我 运行 进行了迁移,现在我的数据库中有四个默认表,它们定义了我的角色和权限。现在我不知道如何将这些角色集成到我的项目中,我的意思是我希望有一些视图只对具有特定权限的用户可见,但无法理解实现这一点的方法。

我也有登录问题,我不知道如何区分按钮点击。

登录(查看):

<div class="form-group">
    <div class="col-lg-offset-1 col-lg-11">
        <?= Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button', 'value' => 'login']) ?>
        <?= Html::submitButton('Register', ['class' => 'btn btn-primary', 'name' => 'register-button', 'value' => 'register']) ?>
    </div>
</div>

站点管理员:​​

public function actionLogin()
{
    if (!Yii::$app->user->isGuest) {
        return $this->goHome();
    }

    $model = new LoginForm();
    if (isset($_POST['submit']) && $_POST['submit']=='login') {
        return $this->goBack();
    }
    if (isset($_POST['submit']) && $_POST['submit']=='register') {

        return $this->render('register');
    }
    return $this->render('login', [
        'model' => $model,
    ]);
}

我只需要在用户单击右键后以不同的视图呈现。如果单击登录按钮,我想在登录视图中重定向,如果单击注册按钮,我想在注册视图中重定向。

这好像是一道二合一的题。

首先是RBAC。

这在 docs. You can use AccessControl to only allow certain actions to be accessed by a role or permission. If you need to show some content in a view based on a role or permission, use if(Yii::$app->user->can('permission_or_role)) echo "I can"; (docs) 中解释得很好。

二、按钮

勾选link,按钮的名称必须是你在控制器中勾选的名称(不是login-button/register-button勾选submit).