2016-07-17 3 views
0

По причинам тестирования я пытаюсь использовать Pjax в виджетах. По мнению:Yii2. Pjax и Session

$testArgs = [ 
      'param' => 'test' 
     ]; 
Yii::$app->session->set('testArgs', $testArgs); 
echo Test::widget($testArgs); 

Тогда в виджете:

class Test extends Widget { 

    public $param; 
    .. 

    public function init() { 
     .. 
    } 

    public function run() { 

     Pjax::begin(); 

     echo "<a href='test/add'>[ + ]</a> | <a href='test/remove'>[ - ]</a>"; 

     Pjax::end(); 
    } 
} 

Тогда в TestController:

public function actionAdd() { 
    $testArgs = Yii::$app->session->get('testArgs'); 
    var_dump($testArgs); 
    die; 
} 

$ testArgs является NULL. Зачем? Pjax создает другой сеанс?

UPDATE 1

Я добавил эхо с session_id(), и это, кажется, является той же сессии

UPDATE 2

В реальном виджете я передаю на сессии $ form (ActiveForm). Я думаю, что это проблема. Я пытался сериализовать его, но он вернул ошибку, говоря «Закрытие не может быть сериализовать»

UPDATE 3

кажется, что закрытие сериализации является хорошо известная ошибка в PHP обзора, как по пропускам, которые, так как я не могу удалить закрытие с объекта.

ответ

0

Я отвечу на этот вопрос. Нет, PJax не создает другой сеанс. Добавление объекта формы к моей сессии нарушает его, я открою для него другой вопрос.

Смежные вопросы