我在cakephp中有一个名为AdminsController的控制器。使用addadmin($ id)函数,如您所见,我尝试将用户的角色更新为“admin”,使用他的用户ID(变量$ id)在数据库中找到他。
class AdminsController extends AppController {
public $helpers = array('Html','Form');
var $uses = array('Admin', 'User');
public function index() {
if(!($this->Auth->user('username') && $this->Auth->user('role') == 'admin')) {
throw new NotFoundException(__('Unauthorized access.Please login first.'));
$this->redirect(array('controller' => 'users','action' => 'login'));
}
}
public function addAdmin($id) {
$this->loadModel('User');
$this->User->id = $id;
$this->User->set('role','admin');
$this->User->save();
}
}
但是这段代码不起作用,尽管stackoverflow中的许多其他cakephp用户都告诉我这是这样做的方法。 你知道可能出了什么问题,或者你可以帮助我吗?
提前谢谢你!
答案 0 :(得分:1)
试试这个:
public function addAdmin($id) {
$this->loadModel('User');
$this->User->id = $id;
$this->User->saveField('role','admin');
}
如果这不起作用,则表示您没有获得正确的ID。
答案 1 :(得分:1)
'role'是users
表中的字段吗?并且'admin'是该字段的有效值吗?如果是这样,这应该有效:
$this->User->id = $id;
$this->User->saveField('role', 'admin');
见here。希望这会有所帮助。