Yii - Füllen einer dropdown-Liste
Möchte ich, um eine Liste der productTypes
aus der Datenbank und Ausgabe diese in eine dropdownlist, die dann verwendet werden, um ajax-füllen Sie eine zweite dropdown-Liste.
Schritt 1: Controller bekommt productTypes
aus der Datenbank
Schritt 2: Controller wandelt die productTypes
Objekt zu einer Liste
Schritt 3a: Output-Liste zu testen in Sicht
Schritt 3b: Füllen Sie eine dropdown-Liste mit dem list view
Snippet controller
public function init()
{
$this->dynamicTypes();
$this->render('calculator', array('types' => $this->_types));
}
public function dynamicTypes()
{
$this->_types = CHtml::listData(ProductType::model()->findAll(), 'id', 'type');
}
View-Datei Snippet
<?php
//Step 3a (this works fine)
echo '<pre>';
print_r($types);
echo '</pre>';
//Step 3b - Returns an error
echo $form->dropDownList('productTypes',1, array($types));
?>
<?php $this->endWidget(); ?>
</div>
Mit Schritt 3b, ich habe versucht, die folgenden:
echo $form->dropDownList('productTypes',1, array($types));
Error Msg: get_class() expects parameter 1 to be object, string given
Laut http://www.yiiframework.com/doc/api/1.1/CHtml#dropDownList-detail, das dropDownList-Methode verwendet die folgenden Argumente:
public static string dropDownList(string $name, string $select, array $data, array $htmlOptions=array ( ))
wo das erste argument ist ein string, der angibt, der name des input-Feldes.
Was habe ich falsch gemacht und wie kann ich dieses Problem beheben?
UPDATE
echo CHtml::dropDownList('productTypes',1, array($types));
scheint zu funktionieren, aber wenn ich mir anschaue, die in der dropdown-Liste anzeigen, aus irgendeinem Grund, es gibt eine 0 in der dropdownlist. Für einige Grund, es ist, dass wir die Optionen in einer Optionsgruppe
<select name="productTypes" id="productTypes">
<optgroup label="0">
<option value="1">Scrap</option>
<option value="2">Coin</option>
<option value="3">Bar</option>
</optgroup>
</select>
GELÖST:
Entfernt array($types)
ersetzt mit nur $types
echo CHtml::dropDownList('productTypes',1, $types);
array($types)
statt nur $types
.InformationsquelleAutor Gravy | 2013-05-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint, wie die
$form
ist ein Objekt derCActiveForm
Klasse. Diese version desdropDownList
Methode nimmt eine Instanz vonCModel
Klasse.Finden Sie in der Signatur der Methode hier CActiveForm::dropDownList
Verwenden
statt
InformationsquelleAutor verisimilitude