1

我正在处理注册表单,我有两个步骤可以让用户在某个网站上注册,所以第 1 步是创建操作,第 2 步是在配置文件控制器上更新操作。

所以我的问题是如何在验证错误时保留选定的国家和城市,但它已经存在了?!检查图像

检查这个

看法:

<div class="row">


        <?php echo $form->labelEx($model,'countryId'); ?>
        <?php echo $form->dropDownList($model, 'countryId',
                CHtml::listData(SysCountry::model()->findAll(), 'id', 'name'),
                array(
                    'empty'=>'Select country',
                    'ajax' => array(
                    'type'=>'POST', //request type
                    'url'=>CController::createUrl('profile/dynamiccity'), //url to call.
                    //Style: CController::createUrl('currentController/methodToCall')
                    'update'=>'#Profile_cityId', //selector to update
                    //'data'=>'js:javascript statement' 
                    //leave out the data key to pass all form values through
                    )));

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


<div class="row">
        <?php echo $form->labelEx($model,'cityId'); ?>
        <?php echo $form->dropDownList($model, 'cityId', array('empty'=>'Please select country first')
        ); ?>
        <?php echo $form->error($model,'cityId'); ?> 
    </div>
4

2 回答 2

1

选中此项,以更新您需要使用的第二个下拉菜单

'update'=>'#'.CHtml::activeId($model,'tracanton'),

echo CActiveForm::dropDownList
                     (
                        $model,'traprovincia',
                        CHtml::listData
                        ( 
                            CatUbicacionGeografica::model()->findAll('cat_ubigeo_nivel=? ORDER BY cat_ubigeo_descripcion', array('2') ), 
                            'cat_ubigeo_codigo', 'cat_ubigeo_descripcion'
                        ), 
                         array(
                            'ajax'=>array(
                                'type' => 'POST',
                                'url' => CController::createUrl('tramite/updatecanton'),
                                'data'=>array('padre'=>'js:this.value'), 
                                'update'=>'#'.CHtml::activeId($model,'tracanton'),
                                ),
                             'prompt' => '( Seleccione Provincia )',
                             'style' => "width: 300px;",
                            // 'onchange'=>'js:$("#tracanton").focus()',
                        )    
                     );
于 2012-10-10T05:05:56.177 回答
0

是 javascript 还是 PHP 验证?如果它是前者使用 JS 来获取下拉框的值,然后重新填充(如果它是这个,ikll 会发布一些代码)。如果它的 PHP 然后在您的下拉菜单中执行以下操作

<select>

//-- If 'save' has been entered and validation has been caught
if (isset($_POST/GET['country'])) {

  echo '<option value=". $_POST/GET['country'] . '" selected="selected">' . $_POST/GET['country'] . '</option>';

} else {

   //-- if validation hasnt been actioned

}

</select>

虽然这可能不适用于您的代码,但我希望您能理解。如果您可以发布您的验证码,那么您将无法正确修改它以适合您。

于 2012-09-08T15:41:37.853 回答