-2

我想列出我模型的所有对象,并将所选模型的 id 写入文件。使用 SiteController 我呈现我的页面,但我应该使用什么模型?

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

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

1 回答 1

2

如果我得到你想要做的事情,你说的是两个模型。像 tbl_product => 产品和 tbl_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 将是 Product 模型。

希望这有用。

于 2012-12-18T10:47:11.377 回答