我有以下代码
class PostsController extends AppController {
public function approve($id = null, $user = true ) {
if (!$id) {
throw new NotFoundException(__('Invalid article'));
}
$post = $this->Post->findById($id);
if(!$post) {
throw new NotFoundException(__('Invalid article'));
}
if ($user['role'] == 'moderator') {
$this->Post->saveField("approval",'Approved by Moderator');
}
elseif ($user['role'] == 'admin') {
$this->Post->saveField("approval",'Posted!');
}
$this->redirect(array('action'=>'index');
}
}
我正在尝试使用当前用户的“角色”($user['role']
)(这是一个枚举)来指示操作的作用。但是,我似乎无法让这个工作。
我是否必须采取不同的措施以确保它知道控制器需要使用用户模型?
答案 0 :(得分:2)
在AppController
中,您似乎有类似
$this->set('user', $user);
您还应该添加
public $loggedUser;
然后
$this->loggedUser = $user;
这样,您将loggedUser
发送给所有控制器。
在PostsController
中,您需要
if ($this->loggedUser['role'] == 'moderator') {
// ..
}
请注意,您可以使用
轻松处理任何控制器内的已记录用户信息$this->Auth->user();
你可以拥有
if $this->Auth->user('role') == 'moderator') {
// ...
}