0

このようにコントローラーから値を事前に選択している場合を除いて、チャームのように機能する4つのドロップダウンリストがあります

public function actionBodyTrim(){
    $trim = new CarTrim;
    $spares = new Spares;

    $spares->makeid  = $_REQUEST['mid'];
    $spares->modelid = $_REQUEST['moid'];
    $spares->bodyid  = $_REQUEST['bid'];
    $spares->trimid  = $_REQUEST['tid'];

    $this->render('bodytrim', array(
                  'trim'=>$trim,
                  'spares'=>$spares
                  )
    );
}

ページがレンダリングされると、最初のドロップダウンリストに事前選択された値が表示されます。以下のコードで 2 番目のドロップダウン リストをテストしましたが、Ajax 呼び出しが起動しません。結果を以下に示します

<div class="span5 leftpull">
    <div class="row">
     <div class="width125"><?php echo $form->labelEx($model,'makeid'); ?></div>
     <div class="widthtxt"><?php echo $form->dropDownList($model,'makeid', CHtml::listData(Makes::model()->findAll(array('order' => 'makename ASC')), 'makeid', 'makename'),
                                     array('prompt'=>'Select Makes',
                                           'ajax'=>array('url'=>CController::createUrl('CarModels'),
                                            'beforeSend' => 'function(){$("#carmodels").addClass("loading");}',
                                            'complete' => 'function(){$("#carmodels").removeClass("loading");}',
                                           'type' =>'POST',
                                           'update'=>'#'. CHtml::activeId($model, 'modelid'),
                                           array('class'=>'ajaxlink'),

                                        ))); ?>


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

<div class="row" id="carmodels">
     <div class="width125"><?php echo $form->labelEx($model,'modelid'); ?></div>
     <div class="widthtxt"><?php echo $form->dropDownList($model, 'modelid', empty($model->modelid) ? array('prompt' => 'Select the country first') :
                                      array('ajax'=>array('type'=>'POST',
                                                          'url'=>CController::createUrl('BodyType'),
                                                          'update'=>'#'. CHtml::activeId($model, 'bodyid'),
                                                          'prompt'=>'Models',
                                                          array('class'=>'ajaxlink'),

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

Ajax の HMTL コードが必要に応じて起動しない。

 <div class="row" id="carmodels">
         <div class="width125"><label for="Spares_modelid" class="required">Model <span class="required">*</span></label></div>
         <div class="widthtxt"><select name="Spares[modelid]" id="Spares_modelid">
<optgroup label="ajax">
<option value="type">POST</option>
<option value="url">/spareparts/index.php?r=spares/parts/BodyType</option>
<option value="update">#Spares_bodyid</option>
<option value="prompt">Models</option>
<optgroup label="0">
<option value="class">ajaxlink</option>
</optgroup>
</optgroup>
</select>                   </div>
    </div>

どこが間違っているのですか??

4

2 に答える 2

0

bodyidフォーム フィールド内のいくつかのパラメータを混同しているようです。生成された HTML を見ると、ajax リクエストが正しくレンダリングされていません。

<optgroup label="ajax">
<option value="type">POST</option>
<option value="url">/spareparts/index.php?r=spares/parts/BodyType</option>
<option value="update">#Spares_bodyid</option>
<option value="prompt">Models</option>
<optgroup label="0">
<option value="class">ajaxlink</option>
</optgroup>
</optgroup>   
于 2013-10-13T06:53:31.450 に答える