Yii2。 Pjax和Session

时间:2016-07-17 07:02:42

标签: php yii yii2

出于测试原因,我试图在小部件中使用Pjax。在视图中:

$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创建了一个不同的会话?

更新1

我在session_id()中添加了一个echo,它似乎是同一个会话

更新2

在真正的小部件中,我传递给$ form(ActiveForm)对象。我认为这是个问题。我试图序列化它,但是它返回了一个错误,说&#34; Closure无法序列化&#34;

更新3

似乎封闭序列化是PHP中一个众所周知的错误,它通过传递来检查如何传递,因为我无法从对象中删除闭包。

1 个答案:

答案 0 :(得分:0)

我会回答这个问题。不,PJax不会创建不同的会话。将表单对象添加到我的会话是打破它,我将为此打开一个不同的问题。