ActiveDropDownList中的默认值

时间:2016-01-15 13:11:23

标签: php jquery yii

我从一位老开发者那里继承了一段代码,目前正试图弄清楚它提交的方法背后的方法。

我正在尝试快速修复我隐藏其中一个字段以提交表单的问题,我遇到的问题是我似乎无法将下拉列表设置为默认值,应该是英国,数据库中的ID为826。

echo CHtml::ActiveDropDownList($address, 'country_id', CHtml::listData(Country::model()->findAll(), 'id', 'name', 'continent'), array(
    'class' => 'col-md-5 hidden',
    'prompt' => 'Select Country',
    'label' => 'something here',
    'ajax' => array(
        'type' => 'POST',
        'url' => CController::createUrl('/user/UpdateRegions'),
        'dataType' => 'json',
        'data' => array('country_id' => 'js:this.value', 'YII_CSRF_TOKEN' => Yii::app()->request->csrfToken),
        'success' => 'function(data) {
                            $("#Address_country_region_id").html(data.country_id);
                            $("#Address_country_region_id").removeClass(\'hidden\');

                            if($("#venue_id").val() === "") {
                                $("#Address_country_region_id").addClass(\'hidden\');
                                }
                        }',
)));

$path = CController::createUrl('/admin/user/UpdateRegions');
$id = $address->id;
// On Load
Yii::app()->clientScript->registerScript('ready', '
    $.ajax({
        type: \'POST\',
        dataType : \'json\',
        data: {\'country_id\': $(\'#Address_country_id\').val(), \'update_id\' : "' . $id . '"},
        url: "' . $path . '",
        success: function(data){
                    $(\'#Address_country_region_id\').html(data.country_id);
                }
    })
');

如果页面加载,如何让此下拉列表指向826的country_id,这样我就可以隐藏该字段并传递表单的验证。

问候。

2 个答案:

答案 0 :(得分:2)

要设置$address型号的默认值,请输入

$address->country_id = Yii::app()->request->getParam(get_class($address).'[country_id]', 816);

之前

echo CHtml::ActiveDropDownList($address, 'country_id', CHtml::listData(Country::model()->findAll(), 'id', 'name', 'continent'), array(

答案 1 :(得分:2)

您粘贴的代码执行此操作:

第一部分呈现一个下拉列表,在更改为/ user / UpdateRegions时执行ajax请求以填充区域的相关下拉列表。

当页面“准备好”时,第二部分也会发出ajax请求。因此,当页面准备就绪时,区域选择将被填充。

如果打印出当前的设置ID,您的脚本应输出id 826。 如果不是,则未将值正确设置为地址模型。

echo $address->country_id;

如果要设置默认值,可以在多个位置执行此操作。例如在控制器'之前'设置实际提交的值或在模型代码本身中(取决于您的代码,例如,如果您有一个从您的activerecord模型扩展的其他表单模型)。

控制器中的正确行可能在此之前:

 $address->country_id= 826;
 before one of these lines in your controller

 $address->attributes=Yii::app()->request->getQuery(get_class($address));
 or 
 $address->attributes=Yii::app()->request->getPost(get_class($address));
 or 
 $address->attributes=$_POST['address']; // or $_GET

如果您在某些控制器代码上找到正确位置时遇到困难。

我想你也可以在这里找到一些帮助 Yii 1.1: An Easy Solution for Dependent dropDownList Using AJAX