2017-06-29 4 views
1

J'ai un dropDownList avec select multiple et quand je vais à l'actionUpdate, je veux que le contenu de dropDownList soit sélectionné (contenu correct).Champ à l'intérieur d'Active Form avec Array

Tableau:

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 

En fait, i ont le code (et travaux, mais seulement pour le premier élément sélectionné de la matrice):

<?= 
$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 --'), 
]) 
?> 

Exemple de code ci-dessus:

Example of the code above

Je veux sélectionner tous les éléments (corrects) sélectionnés dans DropDownList. J'ai essayé aussi:

<?= 
$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 --'), 
]) 
?> 

Mais je reçu une erreur:

Call to a member function isAttributeRequired() on array 

Résultat attendu:

Result Expected

Répondre

1

vous devez attribuer aleardy valeurs sélectionnées correctement. vous pouvez le faire de deux façons.

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

ou

$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

Merci pour votre réponse. Seule la première valeur reste sélectionnée ($ ali [0]). Donc, cette solution ne fonctionne pas aussi. –

+0

Vous pouvez passer toutes les valeurs de tableau sélectionnées comme ceci 'options' => ["1" => ['selected' => true], "5" => ['selected' => true]] –

+0

ici 1 et 5 sont options de liste déroulante. comme ceci, vous avez juste besoin de construire un tableau avec le format is avant cela et passer ce tableau au champ. –