Hi all,
I have some problems with sessions and a little help would make me happy.
I configure session in config/main/components like:
'session' => array(
'class' => 'system.web.CDbHttpSession',
'sessionName' => 'sessid',
'connectionID' => 'db',
'sessionTableName' => 'session',
'autoCreateSessionTable' => true,
'cookieMode' => 'only'
),
I work with 2 lists using CListView in first list. Idea is when I take 10 elements from first list and I put them in second list trigger update first list for new elements. Before ajax update I sent a post with id of elements from second list for exclude them from first list.
Code look like this:
<?php
$this->widget('zii.widgets.CListView', array(
'dataProvider' => $model->search(),
'itemView' => '_element',
'ajaxUpdate' => true,
'enablePagination' => true,
'id' => 'list1',
'itemsTagName' => 'ul',
'beforeAjaxUpdate' => 'js:function(id, data){
var exclude = $(".list2 :input").serializeArray();
if(exclude.length > 0){
exclude.push({name: "' . Yii::app()->request->csrfTokenName . '", value: "' . Yii::app()->request->csrfToken . '"});
$.post("' . Yii::app()->createUrl("/test/exclude") . '", exclude);
}
}',
));
?>
Code above sent an array with ids of elements from list2 to test/exclude action:
public function actionExclude() {
if (isset($_POST['Test']['elements'])) {
$elements_ids = $_POST['Test']['elements'];
$session = Yii::app()->session;
$session->open();
$session->add('exclude', array_unique($elements_ids));
}
}
Session "exclude" is used on another action "test/create", interesting part is
$session = Yii::app()->session;
$session->open();
if ($session->contains('exclude')) {
$exclude = $session["exclude"];
if(count($this->exclude) > 0)
$criteria->addNotInCondition('id', $exclude, 'AND');
}
Strange behavior is that after action "test/exclude", session is set every time with correct ids for exclude, but in action "test/create" session random read.
Someting like 1 of 5 updates store correct ids to be excluded (in session), but totally random. Why session doesn’t store data every time?
Any help is a appreciated.