【问题标题】:Yii CHtml::dropDownList. Same value under different labelsYii CHtml::dropDownList。不同标签下的相同值
【发布时间】:2013-08-28 15:17:39
【问题描述】:
CHtml::dropDownList('name','select',$listData,$htmlOptions);

在我遇到一个问题之前一切正常。我有一个数组,如下所示:

array(
    array('ua', 'Ukraine', '380'),
    array('ru', 'Russia', '7'),
...
    array('kz', 'Kazakhstan', '7'),
);

$listData 是 (value=>label) 的数组。首先,我遍历数组并将 (code=>country) 数组设为 $listData。但是我发现不同的国家可能有相同的代码。我可以使用第一个“两个字母 geo”作为键,$listData 将是一个唯一的数组。 如果我需要相同的值但使用不同的标签怎么办?


似乎唯一的 Yii 解决方案是将标签连接到一个键(值)下。 或者使用纯 html 并单独回显每个选项。

【问题讨论】:

    标签: yii html-select


    【解决方案1】:

    我认为明智的做法是使用新模型,使用新 id (INTEGER PRIMARY KEY AUTOINCREMENT),并将数据保存在单独的字段(国家、地理、代码)中。

    将您的列表数据创建为仅使用新 id 和国家/地区的数组,因此该数组看起来像这样:

    array( 0=>'Ukraine', 1=>'Russia', 2=>'Kazakhstan' );
    

    这样您将只发送 id,并在接收方计算数据(地理位置、代码、国家/地区)。


    但我必须问这个问题:

    似乎唯一的 Yii 解决方案是将标签连接到一个键(值)下。

    您希望选项标签看起来如何?

    <option value="ua" code="380">Ukraine</option>  // Like this? 
    

    那么你应该像这样设置htmlOptions:

    array(
        'ua'=>array('code'=>'380'),
        'ru'=>array('code'=>'7'),
        ...
    );
    

    【讨论】:

    • &lt;option value="380"&gt;+380 (Ukraine)&lt;/option&gt; 这是我的选项标签。我想要&lt;option value="7"&gt;+7 (Russia)&lt;/option&gt;&lt;option value="7"&gt;+7 (Kazakhstan)&lt;/option&gt; 问题是这个数组存储在一个文件中,我不想将它移动到数据库中。
    • 关于 html 选项 - 是的,这可能是某种解决方案,但它需要一些额外的 javascript,它将在提交之前切换值和代码。我只想将数字代码从客户端发送到 php,以避免不必要的服务器端循环。因此,如果$listData 可以传递array('value'=&gt;$value, 'label'=&gt;$label) 的数组,那就太好了...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 2018-08-13
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    相关资源
    最近更新 更多