怎么在yii2中使用dropDownList实现一个二三级联动

  介绍

怎么在yii2中使用dropDownList实现一个二三级联动?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

视图页面:

& lt; ? php  form 美元;=,ActiveForm:开始([   ,,,& # 39;行动# 39;,=祝辞,[& # 39;指数# 39;],   ,,,& # 39;方法# 39;,=祝辞,& # 39;得到# 39;   ]);,才能?比;   & lt;才能!——一级目录——祝辞,& lt; ?=,美元形式→字段(模型中,美元,& # 39;cocate_id& # 39;)→dropDownList(助手:courseCateMap(),(& # 39;提示# 39;,=祝辞,yii:: t(& # 39;后端# 39;,,& # 39;Please  select  course 美食# 39;)]),?比;      & lt;才能!二级目录——祝辞& lt; ?=,美元形式→字段(模型中,美元,& # 39;course_id& # 39;)→dropDownList(助手:courseMap(模型比美元;cocate_id),[& # 39;提示# 39;,=祝辞,yii:: t(& # 39;后端# 39;,,& # 39;Please  select  first  course 美食# 39;)])?比;      ,大敌;& lt; !——三级目录——祝辞& lt; ?=,美元形式→字段(模型中,美元,& # 39;person_id& # 39;)→dropDownList(助手:personMap(1,模型→美元cocate_id),,(& # 39;提示# 39;,=祝辞,yii:: t(& # 39;后端# 39;,,& # 39;Please  select 简历及# 39;)]),?比;   ,,   & lt; ?才能php  ActiveForm:结束();,?比;   页才能面嵌套js   & lt; ?才能php    时间=美元js  & # 39;//分类   美元(“# classsearch-cocate_id") .change(函数(),{   var 才能;cocateId =,(这)美元.val();//获取一级目录的值   美元才能(“# classsearch-course_id") . html (“& lt; option 价值=https://www.yisu.com/"/"> ' .yii: t(“后端”,“请选择课程”)。 ");//二级显示目录标签   $ (" # classsearch-person_id”)。html(“<选项值=/">”。yii: t(“后端”,“请选择人”)。 ");//三级显示目录标签(如果你只需要二级三级的可以直接删除掉)   如果(cocateId> 0) {   getCourse (cocateId);//查询二级目录的方法   getPerson (cocateId);//查询三级目录的方法(如果你只需要二级三级的可以直接删除掉)   }   });      函数getCourse (cocateId) {   var href="的.Url:: (['/ajax/选项'])。’”;//请求的地址   . ajax({美元   “类型”:“获得”,   “url”: href、   “数据”:{cocateId: cocateId类型:“课程”},//所需参数和类型   成功:函数(d) {   $ (" # classsearch-course_id ") .append (d);//返回值输出   }   });   }      函数getPerson (cocateId) {   var href="的.Url:: (['/ajax/选项'])。’”;//同上   . ajax({美元   “类型”:“获得”,   “url”: href、   “数据”:{cocateId: cocateId类型:“人”},//所需参数和类型   成功:函数(d) {   $ (" # classsearch-person_id ") .append (d);//同上   }   });   }         ”;   美元$ this -> registerJs (js);   php ?>

代码:

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

& lt; ? php       namespace 后端\控制器;   class  AjaxController  extends  BaseController   {   ,,,public  function  actionOption (cocateId美元,,类型)   {才能   ,,,switch (类型),{   ,,,,,case  & # 39;当然,:   ,,,,,,,_data 美元;=,助手:courseMap ($ cocateId);   ,,,,,,,休息;   ,,,,,case  & # 39;简历及# 39;:   ,,,,,,,_data 美元;=,助手:personMap (1, cocateId美元);   ,,,,,,,休息;   ,,,,,case  & # 39;类# 39;:   ,,,,,,,_data 美元;=,助手:classMap ($ cocateId);   ,,,,,,,休息;   ,,,}   ,,,,,_tmp 美元;=,& # 39;& # 39;;   ,,,foreach  (_data 美元;as  key 美元;=祝辞,val美元),{   ,,,,,_tmp 美元。=,“& lt; option 价值=https://www.yisu.com/zixun/薄C涝墓丶!? {$ val}>

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

& lt; php ?   namespace 后端\组件;//继承的空间路径   class 辅助//声明类   {   ,//声明查询的方法,一级   public 才能static  function  courseCateMap ()   {才能   ,,,_data 美元;=,CourseCate:发现()→选择(& # 39;cocate_id cocate_name& # 39;)→();   ,,,_data 美元;=,ArrayHelper:地图(array_merge (_data美元),,& # 39;cocate_id& # 39;,, & # 39; cocate_name& # 39;);   ,,,return  _data美元;   ,,}//声才能明查询的方法,二级   ,,,public  static  function  courseMap (cocateId美元)   {才能   ,,,美元条件[& # 39;cocate_id& # 39;],=, cocateId美元;   ,,,_data 美元;=,课程:发现()→选择(& # 39;course_id course_name& # 39;)→在(条件)→();   ,,,_data 美元;=,ArrayHelper:地图(array_merge (_data美元),,& # 39;course_id& # 39;,, & # 39; course_name& # 39;);   ,,,return  _data美元;   ,,}//声才能明查询的方法,三级   ,,public  static  function  personMap (percateId美元,美元cocateId =, 0)   {才能   ,,,,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在yii2中使用dropDownList实现一个二三级联动