-2

モデルのすべてのオブジェクトを一覧表示し、選択したモデルの ID をファイルに書き込みます。SiteController を使用してページをレンダリングしますが、どのモデルを使用する必要がありますか?

$models = myModel::model()->findAll();
$list = CHtml::listData($models, 'id', 'name');

echo CHtml::dropDownList( ???? , $select, $list);
4

1 に答える 1

2

あなたがやろうとしていることがわかれば、あなたは2つのモデルについて話している. tbl_product => Product および tbl_category => Category と同様です。

デモンストレーションの目的で: たとえば、新しい製品を作成する必要があり、すべての製品がカテゴリに属している必要がある場合は、アクティブなドロップダウンを利用できます。あなたと同様のコードを使用すると、次のように言えます。

$category = Category::model()->findAll();
$list = CHtml::listData($category, 'id', 'name');

注意すべき重要なことは、CHtml::activeDropDownList() はさまざまな種類の引数を想定していることです。それと CHtml::dropDownList() の主な違いは、activeDropDownList( はモデルに関連付けられているのに対し、dropDownList() は関連付けられていないことです。

public static string activeDropDownList(CModel $model, string $attribute, array $data, array $htmlOptions=array ())

public static string dropDownList(string $name, string $select, array $data, array $htmlOptions=array ())

したがって、例を使用して、Product モデルに category_id というフィールドがあると仮定すると、ドロップダウン リストは次のいずれかを使用して生成されます。

CHtml::activeDropDownList($model, 'category_id', $list);

または、次のような Activeform オブジェクトを作成した場合:

$form=$this->beginWidget('CActiveForm');

次に、次のようにドロップダウン リストを作成できます。

$form->dropDownList($model, 'category_id', $list);

$model は製品モデルです。

これがお役に立てば幸いです。

于 2012-12-18T10:47:11.377 に答える