1

Yii フレームワークについて質問があります。

以下にリストされているコードのようなドロップダウンリストがあるとしましょう。

選択した値を出力する必要があり、それを実行しようとしました$_POST['countries'] が、何も起こりませんでした。

選択した値を変数に格納して操作できるようにするだけです。

<?php 
      echo CHtml::dropDownList('countries', $select = array(),
      CHtml::listData($countries, 'code', 'name'));
?>
4

2 に答える 2

3

$_POSTvar は を使用して送信されたデータに対応しているため、このHTTP protocolvar を使用するには、クライアント (ブラウザー) がサーバーにデータを送信する必要があります。

ユーザーがドロップダウン リストで値を選択した直後に何かを表示したいので、クライアント側で実行される JavaScript を使用する必要があります。

jquery を使用して選択した値を取得する例を次に示します。次に、値を表示したい div を更新する必要がありますが、それはあなたの質問にないので、私は助けることができません!

$('#dropDownId').change(function(){ 
    var value = $('#dropDownId :selected').text();
    //Here update the div where you need to see the selected value
});

dropDownIddropDownList に与える必要がある ID はどこにありますか ( CHtml::dropDownList html オプション内) 。

于 2013-04-16T12:36:16.663 に答える
2

Ajax リクエストを使用することもできます。いくつかの依存ドロップダウン リストを作成する場合は、さらに優れています。例えば:

echo $form->dropDownList($profile, $field->varname,CHtml::listData(Countries::model()->findAll(),'short','title'), array(
    'class'=>"chzn-select",
    'empty'=>"Select country",  
    'ajax' => array(
                    'type' => 'POST',
                    'url'=>$this->createUrl('registration/state'),   
                    'update' => '#Profile_state',                        
                    'data'=>array('country'=>'js:this.value',), 
                    'success'=> 'function(data) {
                                    $("#Profile_state").empty();
                                    $("#Profile_state").append(data);
                                    $("#Profile_state").trigger("liszt:updated");

                                            } ',

    )));

次に、コントローラーで POST の例を使用できます。

    public function actionState()
{

 $data=Regions::model()->findAll('country_code=:country_code', 
                  array(':country_code'=> $_POST['country']));                
 echo "<option value=''>Select state</option>";
    $data=CHtml::listData($data,'region_code','region_title');
            foreach($data as $value=>$state)  {
                        echo CHtml::tag
                                ('option', array('value'=>$value),CHtml::encode($state),true);
                    }   

}
于 2013-04-16T13:16:56.077 に答える