我真的不明白事件在PyroCMS中是如何运作的。我想根据用户在注册期间选择的用户类型来更新用户角色。它与this post非常相似。因为我不明白事件是如何运作的,所以我不知道如何继续。这是我在用户模块文件夹中添加的事件类:
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Events_Users {
protected $ci;
public function __construct()
{
$this->ci =& get_instance();
Events::register('post_user_register', array($this, 'update_user_group'));
}
public function update_user_group($user_id)
{
//loading the user model class
$this->ci->load->model(array('users/user_m'));
//getting the users details
$user = $this->ci->user_m->get(array('id' => $user_id));
//assigning the user type variable
$user_type = $user->tell_us_who_you_are;
$set = array('group_id' => $user_type);
if($user_type == 'spectator')
{
//do nothing
}else{
//update user group
$this->db->update('users',$set, array('id'=>$user_id));
}
}
}
答案 0 :(得分:1)
Events::register('post_user_register', array($id, 'update_user_group'));
此行将自定义函数注册到事件中,当调用事件(此处为post_user_register)时,将触发您的函数(此处为update_user_group
)。
您只需更改您的函数名称并传递将由事件触发器传递给它的user_id。
public function update_user_group($user_id)
{
// your logic
//dump($user_id);die();
}
请尝试使用您的events.php
的此代码<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Events_Users{
protected $ci;
public function __construct()
{
$this->ci =& get_instance();
Events::register('post_user_register', array($this, 'update_user_group'));
}
public function update_user_group($user_id)
{
$this->db->update('users', array('group_id' => $this->input->post('user_type')), array('user_id'=>$user_id));
}
}