我想列出我模型的所有对象,并将文件写入所选模型的id。使用SiteController我渲染我的页面,但我将使用什么模型?
$models = myModel::model()->findAll();
$list = CHtml::listData($models, 'id', 'name');
echo CHtml::dropDownList( ???? , $select, $list);
答案 0 :(得分: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');
然后您可以像这样创建dropDown列表:
$form->dropDownList($model, 'category_id', $list);
其中$ model是产品型号。
我希望这会有所帮助。