Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php yii框架直接按模型填充CActiveform dropdownlist数据?_Php_Forms_Yii_Associative Array_Dropdownbox - Fatal编程技术网

php yii框架直接按模型填充CActiveform dropdownlist数据?

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

我是yii的新手,现在正在学习

我在这个查询模型中使用它来获取我的列表框的关联数组

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'=>'(选择一个类别))`