yii2 利用dropDownList组件实现三级联动

来源:互联网 发布:夏达 抄袭 知乎 编辑:程序博客网 时间:2024/05/05 18:17

(以下贴出的只是部分核心代码;并不代表完整思路)

view.php

<?= $form->field($model,'level_one_id')->dropDownList([0=>'--请选择一级分类--']+$model->getCategoryList(0),        [            'onchange'=>'            $(".form-group.field-enterprise-category_id").hide();            $.post("'.yii::$app->urlManager->createUrl('admin/enterprises/site').'?typeid=1&p_id="+$(this).val(),function(data){                $("select#enterprises-level_two_id").html(data);            });',        ]) ?>    <?= $form->field($model, 'level_two_id')->dropDownList([0=>'--请选择二级分类--']+$model->getCategoryList($model->level_one_id),        [            'onchange'=>'            $(".form-group.field-enterprise-category_id").show();            $.post("'.yii::$app->urlManager->createUrl('admin/enterprises/site').'?typeid=2&p_id="+$(this).val(),function(data){                $("select#enterprises-level_three_id").html(data);            });',        ]) ?>    <?= $form->field($model, 'level_three_id')->dropDownList([0=>'--请选择三级分类--']+$model->getCategoryList($model->level_two_id)) ?>

controller.php
/**     * 获取商家分类信息     * @param $p_id     * @param int $typeid     */   public function actionSite($p_id,$typeid=0){        $model = new Enterprises();        $model = $model->getCategoryList($p_id);        if($typeid == 1){$notice="--请选择二级分类--";}else if($typeid == 2 && $model){$notice="--请选择三级分类--";}        echo Html::tag('option',$notice, ['value'=>'0']) ;        foreach($model as $value=>$name)        {控制器中的site方法中用到了html::tag,请使用命名空间use yii\helpers\Html;否则无法正确输出。            echo Html::tag('option',Html::encode($name),array('value'=>$value));        }   }

model.php

public function getCategoryList($p_id){        $model = EnterpriseCategory::find()->where('p_id=:p_id',[':p_id'=>$p_id])->all();        return ArrayHelper::map($model, 'id', 'p_name');    }


参考链接:http://www.yiichina.com/tutorial/468



0 0