ActiveDropDownList中的默认值 - php

我已经从一个旧的开发人员那里继承了一段代码,目前正在尝试弄清其提交方法。

我目前正在尝试快速解决问题,在这里我隐藏他的一个字段来提交表单,我遇到的问题是我似乎无法将下拉列表设置为默认值,应该是英国,数据库中的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,因此我可以隐藏字段并通过表单验证。

问候。

参考方案

您粘贴的这段代码是这样做的:

第一部分呈现一个下拉列表,该下拉列表在对/ 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

验证IBAN PHP - php

在设计新平台时,我们尝试集成IBAN编号。我们必须确保IBAN已经过验证,并且存储在数据库中的IBAN始终正确。那么验证数字的正确方法是什么? 参考方案 正如我在其他问题中解释的逻辑一样,我尝试自己创建一个函数。根据Wikipedia文章中解释的逻辑,在下面找到合适的功能。国家特定验证。它适合吗http://en.wikipedia.org/wiki/Int…

PHP:对数组排序 - php

请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…