请原谅我,我仍然对cakephp很新,并且正在恢复我多余的PhP技能。
我已经搜遍了“interweb”的答案,遗憾的是无济于事。
以下是该方案:
我有2个表 - 其中1个是其他组的用户(用于权限)。
用户表 - 非常标准,还有一些额外的个人资料信息。
Groups表 - 包含管理员,超级用户,Auth用户和Unauth用户。
Users表用于身份验证和配置文件(其他用户可以浏览用户配置文件)。现在考虑到这一点,我无法弄清楚如何根据用户(而不是当前登录的用户)属于哪个组来过滤掉哪些用户呈现到索引视图中。
例如,管理员和超级用户帐户配置文件正在呈现,并且分别属于“管理员”和“超级用户”组以及所有其他用户。但是,我希望最终用户(Auth用户)能够看到的是其他用户配置文件,这些用户配置文件是Auth Users组的一部分。
所以任何和所有的帮助都会受到赞赏,既可以保留我的头发,又可以解决这个问题。
好的,这就是我所做的工作,就像一个魅力。将paginate变量配置为如下所示:
var $paginate = array(
'fields' => array(
'User.img_file', 'User.given_name', 'User.family_name', 'Group.name', 'User.username', 'User.created'),
'limit' => 10,
'order' => array(
'User.given_name' => 'asc'
)
);
然后对于索引函数(我想要的),我添加了以下内容:
function index() {
$this->User->recursive = 0;
$this->paginate = array(
'conditions' => array(
'group_id' => 3
));
$users = $this->paginate('User');
$this->set(compact('users'));
}
它的工作方式与我想要的一样,但如果看起来格格不入,或者可以扩展,请发表评论。
答案 0 :(得分:0)
“我无法弄清楚如何根据用户(而不是当前登录的用户)所属的组筛选出哪些用户被渲染到索引视图中。”
不是100%你的意思,但如果你的意思是你只想看到其他用户是管理员(并假设你知道admin_group_id == 1)那么,你想要的是以下内容。
$administrator_group_id = 1;
$conditions = array(
'group_id' => "{$administrator_group_id}"
);
$this->data = $this->User->findAll($conditions);
// note. automatically makes the result data available in the VIEW layer
pr($this->data); // VARDUMP utility
“...我希望最终用户(Auth用户)能够看到其他用户配置文件是Auth Users组的一部分”
(假设auth的东西没有帮助你。)
(如果只有3种类型的组类型,我可以完全控制它们,那么我会考虑不使用组表,并使用枚举。这里有关于如何做的说明这在MySQL中
http://dev.mysql.com/doc/refman/5.0/en/enum.html
或者,你可以用PHP来破解它。
例如。
define('USER', 1);
define('S_USER', 10);
define('ADMIN', 100);
$ user = $ this-> User-> findById($ my_user_id); //或从auth
获取$ conditions = array( “group_id< =”=> “{$用户[ '用户'] [ 'GROUP_ID']}” );
$ this-> data = $ this-> User-> findAll($ conditions); PR($这 - >数据); // VARDUMP
(我做的是你得到登录用户,我确保ADMIN具有最高级别的ID。超级用户有第二个,用户最低。这个查询将返回所有用户等级,或低于他们自己的等级.group_id< = User.group_id)
我希望我没有太多困惑你。继续尝试蛋糕。这是值得的!