0

フォームコンテンツの名前、名前.....などがありました。そして、2つのdrowpdownlistの国と都市、Country drowpdownlistがajaxによって変更されたときに都市をロードしましたが、すべてがクールです。私の問題:

1- [送信]をクリックして検証でエラーが発生した場合、都市の値は空の値に置き換えられます修正方法は?

2-$form->を使用する方法私はcitydrowpdownlistを意味します。

  • 検証でエラーがなければ型枠は機能します
    Wrok

  • 送信をクリックした後のフォームと、ユーザー名が空であるなどの検証でエラーを返す..etc
    エラー

意見:

        <div class="row">
        <?php echo $form->labelEx($model,'البلد'); ?>
    <?php

    /*
     echo chtml::activeDropDownList($model,'country',$model->getcountry(),array('prompt'=>'اختر بلدك ')   , 
    array(
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('current/dynamiccities'), //url to call.
//Style: CController::createUrl('currentController/methodToCall')
'update'=>'#city', //selector to update
//'data'=>'js:javascript statement' 
//leave out the data key to pass all form values through
))

    ); 

    */
    echo CHtml::activedropDownList($model,'country',$model->getcountry(),

    array(
    'prompt'=>'اختر البلد أو المنطقة ',
'ajax' => array(
'type'=>'POST', //request type
'url'=>CController::createUrl('register/dynamiccities'), //url to call.
//Style: CController::createUrl('currentController/methodToCall')
'update'=>'#city', //selector to update
//'data'=>'js:javascript statement' 
//leave out the data key to pass all form values through
))
    );

   ///

    ////

    ?>


        <?php echo $form->error($model,'country'); ?>
    </div>
    <div class="row">
        <?php echo $form->labelEx($model,'المدينة'); ?>
        <?php 

echo CHtml::dropDownList('city','', array());

 ?>
        <?php echo $form->error($model,'city'); ?>
    </div>

都市の負荷のコントローラー:

public function actionDynamiccities() /// Call Ajax
{
    $country=intval($_POST['Users']['country']);

    $data=Cities::model()->findAll('country_id=:country_id', 
                  array(':country_id'=>$country));
    $data=CHtml::listData($data,'id','city_name_e');
     echo CHtml::tag('option',
                array('value'=>''),CHtml::encode('Select Your City '),true);

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

1 に答える 1

1

この行を見れば

echo CHtml :: dropDownList('city'、''、array());

リストが空であることは明らかです。後でコンテンツを編集する場合も、リストは空になります。

私は次のようなものを使用することをお勧めします

echo CHtml :: dropDownList('city'、$ model-> city、empty($ model-> country)?array():CHtml :: listData(Cities :: model()-> findAllByAttributes(array('country_id' = > $ model-> country))、'id'、'city_name_e'));

ここで私はあなたが使うべきかどうかわかりません、$model->countryまたは$model->country_id、あなたのモデルに依存します。

于 2012-12-06T09:10:22.027 に答える