在CakePHP3中,在页面上创建一个仅限管理员的部分

在CakePHP3中,在页面上创建一个仅限管理员的部分,php,cakephp,admin,Php,Cakephp,Admin,我想创建一个页面,其中管理员和用户都可以查看,但在页面的一侧,只有管理员可以查看,而在另一侧,用户和管理员都可以查看 我用这个密码试过了 $this->Auth->user(['role']['admin']); 这是我的控制器中函数的代码 这是我的视图代码 if ($this->request->session()->read('Auth.User.role.admin')){ 我试图实现的是auth组件检查用户的角色,如果它是admin,它应该显示页面中对用

我想创建一个页面,其中管理员和用户都可以查看,但在页面的一侧,只有管理员可以查看,而在另一侧,用户和管理员都可以查看

我用这个密码试过了

$this->Auth->user(['role']['admin']);
这是我的控制器中函数的代码

这是我的视图代码

if ($this->request->session()->read('Auth.User.role.admin')){
我试图实现的是auth组件检查用户的角色,如果它是admin,它应该显示页面中对用户隐藏的部分

这就是我得到的错误

注意(8):未定义索引:admin[APP/Controller\BestellenController.php,第17行]

您可以更好地处理来自AppController的操作授权

在AppController中,执行以下操作:

public function isAuthorized($user) {
    $action = $this->request->params['action']; // request action
    if($action == "test") {
        if($user['role'] == 'admin'){
           return true;
        } else {
            // this page is for admin only
            echo 'You are not authorized to access the page.';
            // redirect('Somewhere');
        }
    }
}
上述函数只是使“测试”操作仅可供管理员访问。如果您想对任何控制器的任何操作执行相同的操作,也只需检查那里的控制器

如果您希望仅允许某些角色访问视图的某些部分,则:

$role = $this->request->session()->read('Auth.User.role');
if($role == "admin") {
  // this is for admin
} else { 
  // this is for other
}

我希望用户表中有角色字段。

只需创建一个条件,如if($this->Auth->user(['role']=“admin”)…我想你可以用appController更好地处理这些事情..如果我这样做了,我会出现以下错误,AuthHelper无法找到。在文档中我找不到任何关于auth Helper的信息。你在appController中加载了auth组件了吗?是的,我加载了它,我不想这样,例如,一些文本blahblah blah,你是指你吗是否希望在视图文件中执行此操作?作为对最后一部分的补充,
$this->request->session()->read(…)
可以毫无问题地用于视图、布局、模板和控制器。