php yii框架直接按模型填充CActiveform dropdownlist数据?
我是yii的新手,现在正在学习 我在这个查询模型中使用它来获取我的列表框的关联数组php yii框架直接按模型填充CActiveform dropdownlist数据?,php,forms,yii,associative-array,dropdownbox,Php,Forms,Yii,Associative Array,Dropdownbox,我是yii的新手,现在正在学习 我在这个查询模型中使用它来获取我的列表框的关联数组 public function getAllCategories() { $cats = $this->model()->findAll(array('select'=>'id,name')); $mainarr = array(); foreach($cats as $obj) $mainarr["$obj->id"]=$obj->na
public function getAllCategories()
{
$cats = $this->model()->findAll(array('select'=>'id,name'));
$mainarr = array();
foreach($cats as $obj)
$mainarr["$obj->id"]=$obj->name;
return $mainarr;
}
在我的表单中,我在dropdownlist中调用这个函数,如下所示
<?php echo $form->dropDownList($model,'name',$model->getAllCategories()); ?>
我有这么多的下拉列表和许多不同的查询,我找不到任何更快的方法来做到这一点,每次我都要创建上面的数组来实现它。如果有使用CActiveForm的解决方案,请告知我更好更快的解决方案 更快的方法,我不确定还有其他方法 但您可以使用函数来减少代码。至少可以减少在模型类中定义函数的次数:
listData()
将使用数组('id'=>'name')
格式获取关联数组
编辑:
为了遵循良好的mvc实践,您可以在控制器操作中使用listData,该操作显示此表单,而不是直接使用表单视图:
公共函数actionFormDisplayer(){
//其他代码
$list_for_name_dropdown=CHtml::listData(Modelname::model()->findAll(),'id','name');
//其他代码
//然后在“渲染传递”中也传递该值
$this->render('viewname',
数组('dropdownpoptions'=>$list\u用于\u name\u下拉列表,//要传递的其他数据
));
}
然后在您的视图中,您可以使用
$dropdownpoptions
如果要在菜单模式下拉菜单中显示菜单名,请使用此代码
$menu_model=menu::model()->findAll()$list=CHtml::listData($menu_model,'menu_id','menu_name'); echo-CHtml::dropDownList('categories',$category,$list,array('empty'=>'(选择一个类别))`