Помогите с советом! Что делаю не так?
Есть пользователь, который относится к двум кабинетам. Необходимо организовать быструю смену кабинетов, так как создавать отдельные логины для 1 пользователя не охота.
Вот часть кода, при авторизации происходит проверка сохраненного кабинета в контроллере SiteController.php
public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
$rows = (new \yii\db\Query())
->select(['kabinet_id'])
->from('users_filtr')
->where(['IP' =>Yii::$app->request->userIP])
->andWhere(['user_id'=>Yii::$app->user->id])
->one();
$cookies = Yii::$app->response->cookies;
if (empty($cookies['kabinet']) && $rows){
$userid = Yii::$app->user->id;
//получаем список кабинетов пользователя
$kabinet= User::findOne($userid)->kabinet;
$i=0;
foreach ($kabinet as $litem){
//если кабинетов много и куки пусты, то задаем 1-ый по списку
if($i==0){
$kabinet_id=$litem->id;
}
$i++;
}
$cookies->add(new \yii\web\Cookie([
'name' => 'kabinet',
'value' =>$kabinet_id,
]));
Yii::$app->db->createCommand()->insert('users_filtr', [
'IP' =>Yii::$app->request->userIP,
'kabinet_id' =>$kabinet_id,
])->execute();
}
return $this->goHome();
}
и актион для изменения куков, так же находиться на SiteController
public function actionGetcoockeikab(){
if(Yii::$app->request->isAjax){
$kabinet_id=Yii::$app->request->post('kabinet_id');
$ip=Yii::$app->request->userIP;
$user_id=Yii::$app->user->id;
Yii::$app->db->createCommand("UPDATE users_filtr SET kabinet_id='$kabinet_id' WHERE IP='$ip' AND user_id='$user_id' ")->execute();
$coockie=Yii::$app->response->cookies;
//Вот тут я вообще правильно ли делаю для перезаписи куков?
$coockie->remove('kabinet');
$coockie->add(new \yii\web\Cookie([
'name' => 'kabinet',
'value' =>$kabinet_id,
]));
return Apu::findOne($kabinet_id)->name_lu;
}
}
И вот как должно выглядеть:
Вроде все работает, но как то не так...то идеально меняется и если вывожу куки то же смена хорошо происходит, но временами хоть скока не нажимай, никакой смены не происходит.
В виджете Nav для Dropdown menu дал свой id.
Вот скрипт Ajax запроса.
$('#form_kab').children('ul').find('li').click(function () {
var kab_id=$(this).attr('id');
$.ajax({
url: '/site/getcoockekab',
type: 'post',
dataType: 'html',
data:{
kabinet:kab_id
},
success:function (data) {
location.reload();
}
});
});
P/s с куками до этого дела не имел..