Yii2下拉框实现
详细介绍yii2下拉框的实现方法,以商品分类的下拉框为例:
第一种方法:使用Html的activeDropDownList(),该方法的优点是:可以自定义下拉框的样式。具体实现如下:
1.控制器中,获取视图中所需的数据
public function actionList(){
$category_model=new Category();
$category_info=$category_model->find()->all();
return $this->renderPartial("list",["category_info"=>$category_info,"category_model"=>$category_model]);
}
2.视图中,use yiihelpersHtml;
<?php $form = ActiveForm::begin([]);?>
<?php echo Html::activeDropDownList($category_model,"category_name",ArrayHelper::map($category_info,"category_id","category_name"),["style"=>"border:1px solid gray;width:150px;"])?>
<?php ActiveForm::end(); ?>
3.这样之后,表单的下拉框名称是:Category Name,如果要改变这个值,在控制器对应的模型中使用attributeLabels()方法,具体如下:
public function attributeLabels(){
return array(
"category_name"=>"分类",
);
}
第二种方法:使用ActiveForm的dropDownList(),优点是使用的yii自定义的样式,也可以自定义样式
1.控制器中获取视图中需要的数据
2.视图中,use yiihelpersHtml;
use yiiwidgetsActiveForm;
use yiihelpersArrayHelper;
<?php $form = ActiveForm::begin([]);?>
<?php echo $form->field($category_model,"category_name")->dropDownList(ArrayHelper::map($category_info,"category_id","category_name"),["style"=>"border:1px solid blue;width:150px;"])?>
<?php ActiveForm::end(); ?>
补充:该方法也可以自定义样式:具体如上代码
注意:如果要在下拉框的首项添加‘请选择’、‘全部’等默认的值。用prompt,代码如下:
<?php echo $form->field($brand_model,"brand_name")->dropDownList(ArrayHelper::map($brand_info,"brand_id","brand_name"),["prompt"=>"全部"])?>
各参数说明:
ArrayHelper::map()------------生成k=>v的一维或多维数组
$category_info----------------后台获取的数据
category_id-------------------option的value值
category_name---------------select 的name值
- 上一篇: YII2如何修改默认控制器/方法
- 下一篇: php面试题之一——PHP核心技术(高级部分)