2017-06-29 4 views
1

Ich habe eine DropDownList mit mehreren Auswahl und wenn ich gehe zum ActionUpdate, ich möchte den Inhalt von dropDownList ausgewählt (richtigen Inhalt).Feld innerhalb Active Form mit Array

Array:

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 

Tatsächlich habe ich diesen Code (und funktioniert, aber nur für das erste Array ausgewählten Elements):

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

Beispiel des obigen Code:

Example of the code above

Ich möchte alle (korrekten) Elemente auswählen, die aus DropDownList ausgewählt wurden. Ich habe versucht, zu:

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

aber ich erhielt einen Fehler:

Call to a member function isAttributeRequired() on array 

Ergebnis erwartet:

Result Expected

Antwort

1

Sie haben richtig aleardy ausgewählte Werte zuweisen. Sie können dies auf zwei Arten tun.

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

oder

$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 --')]) ?> 
+0

Vielen Dank für Ihre Antwort. Nur der erste Wert bleibt ausgewählt ($ ali [0]). Also, diese Lösung funktioniert auch nicht. –

+0

Sie können alle ausgewählten Array-Werte wie diese 'Optionen' => ["1" => ['ausgewählt' => wahr], "5" => ['ausgewählt' => wahr]] –

+0

hier 1 und 5 sind Dropdown-Optionen. So müssen Sie nur ein Array mit dem is-Format davor erstellen und dieses Array an das Feld übergeben. –