Php Yii2:复选框列表的多选未保存

Php Yii2:复选框列表的多选未保存,php,arraylist,activerecord,yii2,Php,Arraylist,Activerecord,Yii2,保存复选框列表的选项时遇到问题。当我选择多个选项时,出现错误答案无效,当我选择一个选项时,它允许我发送数据,但我得到错误htmlspecialchars()预期参数1为字符串,数组给定 'Answer' => [ [ 'answer' => '37', 'question_id' => '34', ], [ 'answer' => '40', 'question_id' => '

保存复选框列表的选项时遇到问题。当我选择多个选项时,出现错误
答案无效
,当我选择一个选项时,它允许我发送数据,但我得到错误
htmlspecialchars()预期参数1为字符串,数组给定

'Answer' => [
    [
        'answer' => '37',
        'question_id' => '34',
    ],
    [
        'answer' => '40',
        'question_id' => '35',
    ],
    [
        'answer' => [ //selected options from checkboxlist
            '43',
            '46',
        ],
        'question_id' => '36',
    ],
    [
        'question_id' => '37',
        'answer' => '42',
    ],
],
控制器

public function actionQuestionnaire($id)
{
    ...... 
    ........

    $count = count(Yii::$app->request->post('Answer', []));

    $answers = [new Answer()];

    for($i = 1; $i < $count; $i++) {
        $answers[] = new Answer();
    }

    if (Model::loadMultiple($answers, Yii::$app->request->post()) && Model::validateMultiple($answers)) {

        foreach ($answers as $answer) {
            $answer->save(false);
        }
        return $this->redirect('index');
    }
    return $this->render('create', [
        'model' => $model,//question data
        'answer' => $answer,
        'dataProvider'=> $dataProvider,
    ]);
}
选择两个以上选项时

当选择一个选项时,它允许我发送,但它向我显示以下错误

如果我只保存radioboxlist中的选项,它允许我毫无问题地保存,唯一的缺点是检查框列表。我希望你能指导我解决这个问题

var_转储到objet

array(4) {

[0]=&gt;
  object(common\models\Answer)#221 (10) {
    ["_attributes":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_oldAttributes":"yii\db\BaseActiveRecord":private]=&gt;
    NULL
    ["_related":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_relationsDependencies":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_errors":"yii\base\Model":private]=&gt;
    NULL
    ["_validators":"yii\base\Model":private]=&gt;
    NULL
    ["_scenario":"yii\base\Model":private]=&gt;
    string(7) "default"
    ["_events":"yii\base\Component":private]=&gt;
    array(0) {
    }
    ["_eventWildcards":"yii\base\Component":private]=&gt;
    array(0) {
    }
    ["_behaviors":"yii\base\Component":private]=&gt;
    array(0) {
    }
  }
  [1]=&gt;
  object(common\models\Answer)#222 (10) {
    ["_attributes":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_oldAttributes":"yii\db\BaseActiveRecord":private]=&gt;
    NULL
    ["_related":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_relationsDependencies":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_errors":"yii\base\Model":private]=&gt;
    NULL
    ["_validators":"yii\base\Model":private]=&gt;
    NULL
    ["_scenario":"yii\base\Model":private]=&gt;
    string(7) "default"
    ["_events":"yii\base\Component":private]=&gt;
    array(0) {
    }
    ["_eventWildcards":"yii\base\Component":private]=&gt;
    array(0) {
    }
    ["_behaviors":"yii\base\Component":private]=&gt;
    array(0) {
    }
  }
  [2]=&gt;
  object(common\models\Answer)#223 (10) {
    ["_attributes":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_oldAttributes":"yii\db\BaseActiveRecord":private]=&gt;
    NULL
    ["_related":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_relationsDependencies":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_errors":"yii\base\Model":private]=&gt;
    NULL
    ["_validators":"yii\base\Model":private]=&gt;
    NULL
    ["_scenario":"yii\base\Model":private]=&gt;
    string(7) "default"
    ["_events":"yii\base\Component":private]=&gt;
    array(0) {
    }
    ["_eventWildcards":"yii\base\Component":private]=&gt;
    array(0) {
    }
    ["_behaviors":"yii\base\Component":private]=&gt;
    array(0) {
    }
  }
  [3]=&gt;
  object(common\models\Answer)#224 (10) {
    ["_attributes":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_oldAttributes":"yii\db\BaseActiveRecord":private]=&gt;
    NULL
    ["_related":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_relationsDependencies":"yii\db\BaseActiveRecord":private]=&gt;
    array(0) {
    }
    ["_errors":"yii\base\Model":private]=&gt;
    NULL
    ["_validators":"yii\base\Model":private]=&gt;
    NULL
    ["_scenario":"yii\base\Model":private]=&gt;
    string(7) "default"
    ["_events":"yii\base\Component":private]=&gt;
    array(0) {
    }
    ["_eventWildcards":"yii\base\Component":private]=&gt;
    array(0) {
    }
    ["_behaviors":"yii\base\Component":private]=&gt;
    array(0) {
    }
  }
}

问题出在你的

echo $count > 1?$form->field($answer, "[$index]answer")->checkboxList(ArrayHelper::map($model->questOptions, 'id_option', 'title_option'))->label('') : $form->field($answer, "[$index]answer")->radioList(ArrayHelper::map($model->questOptions, 'id_option', 'title_option'))->label('') ; ?> echo$count>1?$form->field($answer,[$index]answer”)->复选框列表(ArrayHelp::map($model->questOptions,'id\u option','title\u option'))->标签(“”):$form->field($answer,[$index]answer”)->放射科医生(ArrayHelper::map($model->questOptions,'id\u option',title\u option')->标签(“”); ?> 您需要为模型上的每个问题设置一个属性,就像这样

[['answer','answer1','answer2','answer3','answer4'], 'string']
[['answer'、'answer1'、'answer2'、'answer3'、'answer4']、'string']问题在于你的

echo $count > 1?$form->field($answer, "[$index]answer")->checkboxList(ArrayHelper::map($model->questOptions, 'id_option', 'title_option'))->label('') : $form->field($answer, "[$index]answer")->radioList(ArrayHelper::map($model->questOptions, 'id_option', 'title_option'))->label('') ; ?> echo$count>1?$form->field($answer,[$index]answer”)->复选框列表(ArrayHelp::map($model->questOptions,'id\u option','title\u option'))->标签(“”):$form->field($answer,[$index]answer”)->放射科医生(ArrayHelper::map($model->questOptions,'id\u option',title\u option')->标签(“”); ?> 您需要为模型上的每个问题设置一个属性,就像这样

[['answer','answer1','answer2','answer3','answer4'], 'string']
[['answer'、'answer1'、'answer2'、'answer3'、'answer4']、'string']bro尝试使用die()和print\r()您的变量让我们看看它呈现了什么可能您试图获取一个对象而不是字符串如果我使用print\r或var\u dump,它会显示错误
htmlspecialchars()期望参数1是字符串,数组给定的
否,在你尝试迭代你的对象之前,首先,die()和print_r()你的对象我已经获得了以下结果Bro try to use die(),print_r()你的变量让我们看看它呈现了什么也许你试图获取一个对象而不是字符串如果我使用print_r或var_dump,它会显示错误
htmlspecialchars()期望参数1是字符串,数组给定
no,在您尝试迭代对象之前,首先,die()和print\r()您的对象已获得以下信息 [['answer','answer1','answer2','answer3','answer4'], 'string']