Я использовал следующий beforeRender в App Controller.
public function beforeRender(Event $event)
{
if (in_array($this->response->type(), ['application/json', 'application/xml'])) {
$this->set('_serialize', true);
}else{
$this->loadComponent('Auth');
$loginuser = $this->Auth->User('username');
$employee_id = $this->Auth->User('employee_id');
if($employee_id!=null){
$loginemployee = TableRegistry::get('Employees')->get($employee_id);
$roleid = $this->Auth->User('role_id');
$this->viewBuilder()->theme('AdminLTE');
$this->viewBuilder()->className('AdminLTE.AdminLTE');
$this->set('theme', Configure::read('Theme'));
$sidemenu = null;
if($roleid==null)
$sidemenu = $this->loadmenu(1);
else
$sidemenu = $this->loadmenu($roleid);
$this->set(compact('loginuser','sidemenu','loginemployee'));
}
}
}
В макете по умолчанию.
<li class="dropdown user user-menu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<?php if($loginemployee->photo!=null && $loginemployee->photo!='')
echo $this->Html->image('/files/Employees/photo/'.$loginemployee->photo, array('class' => 'user-image', 'alt' => 'User Image'));
else
echo $this->Html->image('/files/np.jpg'.$loginemployee->photo, array('class' => 'user-image', 'alt' => 'User Image')) ?>
<span class="hidden-xs"><?=$loginemployee->name?></span>
</a>
</li>
Это работает на локальном сервере, а также при низком уровне одновременного использования.
При одновременном активном входе более 20. Это покажет другое имя пользователя на экране текущего пользователя вместо его / ее имени.
Как мне решить эту проблему?