yii2中dropDownList实现二级和三级联动写法

2018-10-15 17:26

阅读:378

整理文档,搜刮出一个yii2中dropDownList实现二级和三级联动写法的代码,稍微整理精简一下做下分享。

视图页面:

<?php $form = ActiveForm::begin([ action => [index], method => get, ]); ?> <!--一级目录--> <?= $form->field($model, cocate_id)->dropDownList(Helper::courseCateMap(), [prompt => yii::t(backend, Please select course cate)]) ?> <!--二级目录--><?= $form->field($model, course_id)->dropDownList(Helper::courseMap($model->cocate_id), [prompt => yii::t(backend, Please select first course cate)])?> <!--三级目录--><?= $form->field($model, person_id)->dropDownList(Helper::personMap(1, $model->cocate_id), [prompt => yii::t(backend, Please select person)]) ?> <?php ActiveForm::end(); ?> 页面嵌套js <?php $js = //分类 $(#classsearch-cocate_id).change(function() { var cocateId = $(this).val();//获取一级目录的值 $(#classsearch-course_id).html(<option value=\\>.yii::t(backend, Please select course).</option>);//二级显示目录标签 $(#classsearch-person_id).html(<option value=\\>.yii::t(backend, Please select person).</option>);//三级显示目录标签(如果 你只需要二级 三级的可以直接删除掉) if (cocateId > 0) { getCourse(cocateId);//查询二级目录的方法 getPerson(cocateId);//查询三级目录的方法(如果 你只需要二级 三级的可以直接删除掉) } }); function getCourse(cocateId){ var href = .Url::to([/ajax/option]).;//请求的地址 $.ajax({ type : GET, url : href, data : {cocateId : cocateId,type : course},//所需参数和类型 success : function(d) { $(#classsearch-course_id).append(d);//返回值输出 } }); } function getPerson(cocateId){ var href = .Url::to([/ajax/option]).;//同上 $.ajax({ type : GET, url : href, data : {cocateId : cocateId,type : person},//所需参数和类型 success : function(d) { $(#classsearch-person_id).append(d);//同上 } }); } ; $this->registerJs($js); ?>

php代码:

这个是ajax自己声明的控制器:

<?php namespace backend\controllers; class AjaxController extends BaseController { public function actionOption($cocateId, $type) { switch ($type) { case course: $_data = Helper::courseMap($cocateId); break; case person: $_data = Helper::personMap(1, $cocateId); break; case class: $_data = Helper::classMap($cocateId); break; } $_tmp = ; foreach ($_data as $key => $val) { $_tmp .= <option value= . $key . >{$val}</option>; } echo $_tmp; }

Helper.php 封装好的类文件 可以单独建立文件 在配置中引用 :

<?php namespace backend\components;//继承的空间路径 class Helper//声明类 { //声明查询的方法 一级 public static function courseCateMap() { $_data = CourseCate::find()->select(cocate_id,cocate_name)->all(); $_data = ArrayHelper::map(array_merge($_data), cocate_id, cocate_name); return $_data; } //声明查询的方法 二级 public static function courseMap($cocateId) { $condition[cocate_id] = $cocateId; $_data = Course::find()->select(course_id,course_name)->where($condition)->all(); $_data = ArrayHelper::map(array_merge($_data), course_id, course_name); return $_data; } //声明查询的方法 三级 public static function personMap($percateId, $cocateId = 0) { $shopId = Yii::$app->user->identity->shop_id; $condition = []; if ($shopId) { $condition[shop_id] = $shopId; } if ($percateId) { $condition[percate_id] = $percateId; } if ($cocateId) { $condition[cocate_ids] = intval($cocateId); } $_data = Person::find()->select(person_id,person_name)->where($condition)->all(); $_data = ArrayHelper::map(array_merge($_data), person_id, person_name); return $_data; } } ?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


评论


亲,登录后才可以留言!