簡體   English   中英

耶 依賴下拉

[英]Yii. Dependent Dropdown

我嘗試進行依賴選擇。

我的模特

區域 ID區域

城市編號城市region_id

客戶 ID地區城市地址電話

在我看來(客戶表格):

<div class="row">
    <?php
    echo $form->dropDownList($model,'region',CHtml::listData(Region::model()->findAll(), 'id', 'region'),
        array(
            'prompt'=>'Select Region',
            'ajax' => array(
                'type' => 'POST', //My method type
                'url' => CController::createUrl('myController/LoadRegions'), //This is my request/ajax URL
                array('id'=>'js:this.value'), //I'm passing the selected dropdonw value.
                'dataType' => 'JSON',
                'success'=>'js:function(data)' //The functionaliy after success
                    . '{'
                    . '    var html="";'
                    . '    $.each(data,function(i,obj)'
                    . '    {'
                    . '         html+="<option value=obj.City_id>"+obj.City_city+"</option>"'
                    . '    });'
                    . '    $("#User_City_id").html(html);' //ID of regions dropdown list
                    . '}'

            )));
    echo CHtml::dropDownList($model,'City_id', array(), array('prompt'=>'Select City'));

    ?>

在我的控制器(客戶)中:

public function actionLoadRegions()
    {

        $Region_id=$_POST['region'];

        $criteria=new CDbCriteria();
        $criteria->select=array('Region_id, Region_region');
        $criteria->condition='Region_id='.$Region_id;
        $criteria->order='Region_region';
        $RegionAry= Region::model()->findAll($criteria);

        $ary=array();
        foreach($RegionAry as $i=>$obj)
        {
            $ary[$i]['Region_id']=$obj->Region_id;
            $ary[$i]['Region_region']=$obj->Region_region;
        }
        echo json_encode($ary);
    }

但是代碼不起作用。 客戶類的錯誤對象無法轉換為字符串。 為什么?

這會起作用

您的表格

'success'   => 'js:function(data) {
                     $("#User_City_id").html(data);
               }'

您的控制器功能

public function actionLoadRegions()
    {

        $Region_id=$_POST['region'];

        $criteria=new CDbCriteria();
        $criteria->select=array('Region_id, Region_region');
        $criteria->condition='Region_id='.$Region_id;
        $criteria->order='Region_region';
        $RegionAry= Region::model()->findAll($criteria);

        $ary=array();
        foreach($RegionAry as $i=>$obj)
        {
            $ary[$i]['Region_id']=$obj->Region_id;
            $ary[$i]['Region_region']=$obj->Region_region;
        }
       echo CHtml::dropDownList('dropdown_name', $selected, $ary);

    }

我對Yii並不熟悉,但是我認為您將整數變量視為字符串,以使其顯示錯誤。

您確定這一點-

回聲CHtml :: dropDownList($ model,'City_id',array(),array('prompt'=>'Select City'));

試一試

回聲CHtml :: dropDownList($ model,City_id,array(),array('prompt'=>'Select City'));

使用這樣的東西:

echo $form->dropDownList(
                $model,
                'state_id', 
                $array,
                array(
                    'class' => 'form-control',
                    'ajax' => array(
                            'type' => 'POST',
                            'url' => $this->createUrl('getregions'),
                            'update' => '#Customers_region_id',
                            'data'=>array('state_id'=>'js:this.value')
                        )
                )
        ); ?>

但您必須在定義dropDownList時更改字段state_id的名稱,更新和url。

也許會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM