Codeigniter form_dropdown模式编辑

时间:2015-01-22 03:55:42

标签: php arrays codeigniter

这是表单处于编辑模式时的视图,但是如果我不编辑该字段,作为回报我得到的时候我想要保存它是列号国家的'#':

<tr class="form-row">
    <td >Country    :   </td>
    <?php 
     if(!empty($ar_countries[$isi->country])) {
       $ar_countries['#'] = $ar_countries[$isi->country]; }
     else{
       $ar_countries['#'] = 'Please Select';
    }
    ?>
    <td class="field">
        <?php echo form_dropdown('country', $ar_countries, '#', 'id="country" name="country"'); ?>
    </td>
</tr>

$ ar_countries中的值是这样的:

array(21) { ["BN"]=> string(17) "Brunei Darussalam" ["KH"]=> string(8) "Cambodia" ["CN"]=> string(5) "China" ["HK"]=> string(21) "Hong Kong (sar) China" ["ID"]=> string(9) "Indonesia" } 

我将'BN'保存为Id_country,将'Brunei Darussalam'保存为name_country

下拉已经成功显示所选数据,但当我重新保存时,返回更改为列号的“#”

例如: 我没有做任何事情就编辑了文莱达鲁萨兰国并保存了它之后发生的事情就是它的id_country改为'#'

我应该怎么做才能将id保持为他的iso('BN')而不是更改为'#'?

感谢您的所有建议和回答,非常感谢。

1 个答案:

答案 0 :(得分:0)

这是因为您始终将所选值设置为# recall the documentation for that method

$options = array(
                  'small'  => 'Small Shirt',
                  'med'    => 'Medium Shirt',
                  'large'   => 'Large Shirt',
                  'xlarge' => 'Extra Large Shirt',
                );

$shirts_on_sale = array('small', 'large');

echo form_dropdown('shirts', $options, 'large');

第三个参数是所选选项的值,您最初将其设置为等于#,并且您认为未选择任何其他值,因此它将被发送到您的控制器。要进行编辑,请将其更改为值保存项目,如下所示:

<tr class="form-row">
    <td >Country    :   </td>
    <?php 
     if(!empty($ar_countries[$isi->country])) {
       $val = $ar_countries[$isi->country]; }
     else{
       $val = 'Please Select';
    }
    ?>
    <td class="field">
        <?php echo form_dropdown('country', $ar_countries, $val, 'id="country" name="country"'); ?>
    </td>
</tr>

换句话说,您必须确保在下拉列表中以任何方式选择已保存记录的值。