Php 带数组的活动窗体内的字段

Php 带数组的活动窗体内的字段,php,yii2,yii2-advanced-app,yii2-model,Php,Yii2,Yii2 Advanced App,Yii2 Model,我有一个具有多个选择的dropDownList,当我转到actionUpdate时,我想选择dropDownList的内容(正确的内容) 数组: array (size=3) 0 => object(backend\models\AliHasAliPlanRef)[100] private '_attributes' (yii\db\BaseActiveRecord) => array (size=3) 'ali_s_i

我有一个具有多个选择的dropDownList,当我转到actionUpdate时,我想选择dropDownList的内容(正确的内容)

数组:

array (size=3)
  0 => 
    object(backend\models\AliHasAliPlanRef)[100]
      private '_attributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 23
          'ali_plan_ref_id' => int 50
          'weight' => int 22
      private '_oldAttributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 23
          'ali_plan_ref_id' => int 50
          'weight' => int 22
      private '_related' (yii\db\BaseActiveRecord) => 
        array (size=0)
          empty
      private '_errors' (yii\base\Model) => null
      private '_validators' (yii\base\Model) => null
      private '_scenario' (yii\base\Model) => string 'default' (length=7)
      private '_events' (yii\base\Component) => 
        array (size=0)
          empty
      private '_behaviors' (yii\base\Component) => 
        array (size=0)
          empty
  1 => 
    object(backend\models\AliHasAliPlanRef)[105]
      private '_attributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 24
          'ali_plan_ref_id' => int 50
          'weight' => int 33
      private '_oldAttributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 24
          'ali_plan_ref_id' => int 50
          'weight' => int 33
      private '_related' (yii\db\BaseActiveRecord) => 
        array (size=0)
          empty
      private '_errors' (yii\base\Model) => null
      private '_validators' (yii\base\Model) => null
      private '_scenario' (yii\base\Model) => string 'default' (length=7)
      private '_events' (yii\base\Component) => 
        array (size=0)
          empty
      private '_behaviors' (yii\base\Component) => 
        array (size=0)
          empty
  2 => 
    object(backend\models\AliHasAliPlanRef)[106]
      private '_attributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 25
          'ali_plan_ref_id' => int 50
          'weight' => int 4
      private '_oldAttributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 25
          'ali_plan_ref_id' => int 50
          'weight' => int 4
      private '_related' (yii\db\BaseActiveRecord) => 
        array (size=0)
          empty
      private '_errors' (yii\base\Model) => null
      private '_validators' (yii\base\Model) => null
      private '_scenario' (yii\base\Model) => string 'default' (length=7)
      private '_events' (yii\base\Component) => 
        array (size=0)
          empty
      private '_behaviors' (yii\base\Component) => 
        array (size=0)
          empty
实际上,我有这段代码(并且可以工作,但仅适用于数组的第一个选定项):

预期结果:

array (size=3)
  0 => 
    object(backend\models\AliHasAliPlanRef)[100]
      private '_attributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 23
          'ali_plan_ref_id' => int 50
          'weight' => int 22
      private '_oldAttributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 23
          'ali_plan_ref_id' => int 50
          'weight' => int 22
      private '_related' (yii\db\BaseActiveRecord) => 
        array (size=0)
          empty
      private '_errors' (yii\base\Model) => null
      private '_validators' (yii\base\Model) => null
      private '_scenario' (yii\base\Model) => string 'default' (length=7)
      private '_events' (yii\base\Component) => 
        array (size=0)
          empty
      private '_behaviors' (yii\base\Component) => 
        array (size=0)
          empty
  1 => 
    object(backend\models\AliHasAliPlanRef)[105]
      private '_attributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 24
          'ali_plan_ref_id' => int 50
          'weight' => int 33
      private '_oldAttributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 24
          'ali_plan_ref_id' => int 50
          'weight' => int 33
      private '_related' (yii\db\BaseActiveRecord) => 
        array (size=0)
          empty
      private '_errors' (yii\base\Model) => null
      private '_validators' (yii\base\Model) => null
      private '_scenario' (yii\base\Model) => string 'default' (length=7)
      private '_events' (yii\base\Component) => 
        array (size=0)
          empty
      private '_behaviors' (yii\base\Component) => 
        array (size=0)
          empty
  2 => 
    object(backend\models\AliHasAliPlanRef)[106]
      private '_attributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 25
          'ali_plan_ref_id' => int 50
          'weight' => int 4
      private '_oldAttributes' (yii\db\BaseActiveRecord) => 
        array (size=3)
          'ali_s_id' => int 25
          'ali_plan_ref_id' => int 50
          'weight' => int 4
      private '_related' (yii\db\BaseActiveRecord) => 
        array (size=0)
          empty
      private '_errors' (yii\base\Model) => null
      private '_validators' (yii\base\Model) => null
      private '_scenario' (yii\base\Model) => string 'default' (length=7)
      private '_events' (yii\base\Component) => 
        array (size=0)
          empty
      private '_behaviors' (yii\base\Component) => 
        array (size=0)
          empty

您必须正确分配所有选定的值。你可以用两种方法来做

$ali[0]->ali_s_id = [23, 24, 25];

$selectedValues=[“23”=>[“选定的”=>true],“24”=>[“选定的”=>true],“25”=>[“选定的”=>true];

谢谢你的回复。只有第一个值保持选中状态($ali[0])。因此,此解决方案也不起作用。您可以传递所有选定的数组值,如“选项”=>[“1”=>[“选定的”=>true],“5”=>[“选定的”=>true]]这里1和5是下拉选项。像这样,您只需要在前面构建一个具有is格式的数组,然后将该数组传递给字段。我理解,但不起作用。只有值$ali[0]->ali_s_id($ali[0],'ali_s_id')保持选中状态。我的值介于1和32之间。这将更有帮助
Call to a member function isAttributeRequired() on array
$ali[0]->ali_s_id = [23, 24, 25];
$selectedValues = ["23" => ['selected'=>true], "24" => ['selected'=>true], "25" => ['selected'=>true] ];

<?= $form->field($ali[0], 'ali_s_id', ['template' => '{label}{input}<span class="help-block">{hint}{error}</span>'])->dropDownList(Category::getHierarchy(), ['size' => 10, 'multiple' => 'multiple'],['options' => $selectedValues], 'prompt' => Yii::t('app', '-- Select --')]) ?>