0

私のサンプル データベース。

私のサンプルデータベース

モデル / REALSTATE.PHP

    public function relations()
{
    return array(
        'neighborhood' => array(self::BELONGS_TO, 'Neighborhood', 'fk_id_neighborhood'),

    );
}

私が必要とするのは、プロパティを登録するときです。すべてのオプションがあります。例を参照してください。VIEW / REALSTATE / ADD.PHP

ここに画像の説明を入力

私の質問は ajax とは関係ありません。特定のモデルを持っている DropDownList ごとにこの統合を行う方法はありますか? このような?

4

1 に答える 1

2

とにかくajaxが必要です。

$form->dropDownList($model, $state, CHtml::listData(State::model()->findAll(),'id','state'), array(
        'empty'=>"Select state",    
        'ajax' => array(
                        'type' => 'POST',
                        'url'=>$this->createUrl('registration/state'),   
                        'update' => '#YOURcityID',                        
                'data'=>array('state'=>'js:this.value',),   
            'success'=> 'function(data) {$("#YourcityID").empty();
                            $("#YourcityID").append(data);

                                                } ',

        )));

あなたのコントローラーで:

public function actionState()
{

 $data=Cities::model()->findAll('fk_id_state=:state', 
                  array(':state'=> $_POST['state']));

    $data=CHtml::listData($data,'city_id','city');
            foreach($data as $value=>$city)  {
                        echo CHtml::tag
                                ('option', array('value'=>$value),CHtml::encode($city),true);
                    }   

}

フォームに戻る:

$form->dropDownlist($model, 'city', array(),array(
        'empty'=>"Select city",
'ajax' => array(
                            'type' => 'POST',
                            'url'=>$this->createUrl('registration/city'),   
                            'update' => '#YOURneighborhoodID',                        
                    'data'=>array('city'=>'js:this.value',),    
                'success'=> 'function(data) {                                       $("#YourneighborhoodID").empty();
                                            $("#YourneighborhoodID").append(data);

                                                    } ',
        ));

コントローラーで:

public function actionCity()
{

 $data=Neighborhood::model()->findAll('fk_id_city=:city', 
                  array(':city'=> $_POST['city']));

    $data=CHtml::listData($data,'neghborhood_id','neighborhood');
            foreach($data as $value=>$neighborhood)  {
                        echo CHtml::tag
                                ('option', array('value'=>$value),CHtml::encode($neighborhood),true);
                    }   

}

これは魅力のように機能します。タイプミスと変数を確認してください。急いでいたためです。よろしく。

于 2013-06-04T15:18:40.327 に答える