在Yii2会话中存储$ _POST

时间:2014-10-02 21:32:46

标签: session-variables yii2

我的测验表格有点麻烦。我正在使用一个页面来显示用户回答的单个问题,从那里我希望保存问题ID和选项ID(我的表单是多项选择,我设置选项)。

我的HTML看起来像这样:

<input type="radio" name="question[3]" value="4">My Answer

发布表单时我正在执行此操作

if(isset(Yii::$app->session['question'])){

                // Get posted array
                $question = $_POST['question'];
                Yii::$app->session['question'] = $question;
                print_r(Yii::$app->session['question']);
            }

所以它被保存到我的会话中:

Array
(
[3] => 4
)

哪个好,我发现的问题是试图保存下一个问题而不覆盖之前的[question_id] =&gt; [option_id]。

我理解为什么以下代码只会覆盖现有的session ['question']变量。但是我很难能够保存每个问题并将数组应答到​​我的变量中。

我已尝试Yii::$app->session['question'][$i] = $question;并获得Indirect modification of overloaded element of yii\web\Session has no effect

我也试过array_pusharray_merge尝试组合上一个问题和选择的选项,但也没有运气。我在这做错了什么?

2 个答案:

答案 0 :(得分:2)

正确的方法是

$q = $_POST['question'];
Yii::$app->session['question'] = array_merge(Yii::$app->session['question'], [$question]);

答案 1 :(得分:1)

你应该做

Yii::$app->session['question'][] = $question;

注意额外的[]