php - example - yii2 dropdownlist values



Yii Dropdown-Liste mit $ form-> Dropdown-Liste (2)

Erstellen Sie eine Listenvariable wie folgt:

In Ihrem Modell:

$countriesIssued = Country::model()->findAll(array('select'=>'code, name', 'order'=>'name'));

Und Ihrer Meinung nach:

$list = CHtml::listData($countriesIssued, 'code', 'name'));

 echo CHtml::dropDownList('Your variable', Your $model, 
          $list,
          array('empty' => '(Select a category'));

Ich möchte ein Formular aus 2 verschiedenen Modellen erstellen, 1. ist für Länder und das 2. ist für Dokumente. Das Problem ist, dass ich keine Dropdown-Liste erstellen kann, ich bekomme die Fehler die ganze Zeit.

Hier ist der Code, zuerst mein Controller.php Teil

$model = new Country;
$model2 = new Product;

    $this->performAjaxValidation(array($model, $model2));
    if(isset($_POST['Country'],$_POST['Product']))
    {
        // populate input data to $model and $model2
        $model->attributes=$_POST['Country'];
        $model2->attributes=$_POST['Product'];

        // validate BOTH $model and $model2
        $valid=$model->validate();
        $valid=$model2->validate() && $valid;

        if($valid)
        {
            // use false parameter to disable validation
            $model->save(false);
            $model2->save(false);

            $this->redirect('index');
        }
    }
...
$countriesIssued = Country::model()->findAll(array('select'=>'code, name', 'order'=>'name'));
...
     $this->render('legalisation', array('model'=>$model, 'model2'=>$model2, 'documents'=>$documents, 'countriesIssued'=>$countriesIssued, 'countries'=>$countries, 'flag'=>$flag));
    }

In meinem View-Skript verwende ich diesen Code

      <?php $form = $this->beginWidget('CActiveForm', array(
    'id'=>'user-form',
    'enableAjaxValidation'=>true,
)); ?>

<?php echo $form->errorSummary(array($model,$model2)); ?>

<?php echo $form->dropDownList($model, 'countriesIssued',
        CHtml::listData($countriesIssued, 'code', 'name'));?>


<?php $this->endWidget(); ?>

aber ich bekomme diesen Fehler: Property "Country.countriesIssued" ist nicht definiert.

Ok, es ist nicht definiert, ich versuche, es in "countriesIssued" zu ändern, dann habe ich einen weiteren Fehler erhalten, der besagt, dass für foreach () ein ungültiges Argument angegeben wurde .

Wenn mir bitte jemand helfen kann. Ich weiß, es gibt mehr Lösungen im Netz, ich versuche es aber nicht zu verstehen, Danke.


Answer #1

Per Definition ist der erste Parameter von listData ein Array; Du bist ein Objekt;

    <?php 
echo $form->dropDownList($model, 'classification_levels_id', CHtml::listData(ClassificationLevels::model()->findAll(), 'id', 'name'),$classification_levels_options);
?>




yii