怜晚情之泪 2017-04-13 15:44:59 9064次浏览 3条评论 11 3 0

视图页面:

<?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;
    }
    }
    ?>
觉得很赞
您需要登录后才可以评论。登录 | 立即注册