我尝试为管理做票务系统。所以我有一个User模型如下:
App::uses('AppModel', 'Model');
App::uses('SimplePasswordHasher', 'Controller/Component/Auth');
class User extends AppModel {
public $name = 'User';
public $hasMany = 'Ticket';
public $validate = array(
'username' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Un nom d\'utilisateur est requis.'
)
),
'password' => array(
'required' => array(
'rule' => array('notEmpty'),
'message' => 'Un mot de passe est requis.'
)
),
'role' => array(
'valid' => array(
'rule' => array('inList', array('administrateur', 'developpeur', 'technicien', 'commercial')),
'message' => 'Merci de rentrer un rôle valide',
'allowEmpty' => false
)
)
);
public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['password'])) {
$passwordHasher = new SimplePasswordHasher();
$this->data[$this->alias]['password'] = $passwordHasher->hash(
$this->data[$this->alias]['password']
);
}
return true;
}
}
当用户使用用户名和密码登录时,它会进入管理区域,此处门票应由用户列出。
这是我的模特我的机票:
App::uses('AppModel', 'Model');
class Ticket extends AppModel {
public $name = 'List';
public $tablePrefix = 'tickets_';
public $belongsTo = array(
'User' => array(
'foreignKey' => 'username_id'
)
);
}
这是我的控制器Ticket的代码:
class TicketsController extends TicketAppController{
public function index(){
$this->request->data['Ticket']['username_id'] = $this->Auth->user('id');
$this->set('list', $this->Ticket->findById($this->data['Ticket']['username_id']));
}
}
当我输入findById(5)时,例如我有一个与连接用户关联的正确票证。但是显示用户通过其身份证显示的是什么而不是5?
答案 0 :(得分:2)
我想这个:
class TicketsController extends TicketAppController{
public function index(){
$this->request->data['Ticket']['username_id'] = $this->Auth->user('id');
$this->set('list', $this->Ticket->findById($this->data['Ticket']['username_id']));
}
}
应该是这样的:
class TicketsController extends TicketAppController{
public function index(){
$this->request->data['Ticket']['username_id'] = $this->Auth->user('id');
$this->set('list', $this->Ticket->findByUsernameId($this->data['Ticket']['username_id']));
}
}
标记findByUsernameId
。您正在搜索username_id,而不是票证的ID。
得到它了? ;)
答案 1 :(得分:0)
您无法更改
$this->request->data
,因此请尝试使用变量 $ user_id 代替 $ this-> request-> data ['Ticket'] ['username_id']
class TicketsController extends TicketAppController{
public function index(){
$user_id = $this->Auth->user('id');
$this->set('list', $this->Ticket->findById($user_id));
}
}