【问题标题】:symfony: question about a choice widgetsymfony:关于选择小部件的问题
【发布时间】:2010-07-09 13:25:32
【问题描述】:

我有一个表单中的选择小部件:

$years = range(14,130);
$this->widgetSchema['age'] = new sfWidgetFormSchema();
foreach (array('from', 'to') as $value)
{ 
    $this->widgetSchema['age'][$value] = new sfWidgetFormChoice(array(
        'label' => $value,
            'choices' => array_merge(array('' =>  '-'),array_combine($years,$years)))); 
}

如果我选择例如 14 并且在接收表单的操作中会这样写:

var_dump($valores_widgets['age']['from']);

显示为 0。但我预计为 14。

有什么想法吗?

问候

贾维

【问题讨论】:

    标签: php select input symfony1


    【解决方案1】:

    查看array_merge的文档:

    但是,如果数组包含 数字键,后面的值不会 覆盖原始值,但会 被附加。

    如果所有数组只包含 数字键,结果数组是 给定的递增键从 零。

    快速测试:

    maerlyn@biliskner:~$ php --run '$years=range(14,16);var_dump(array_merge(array("" =>  "-"), array_combine($years,$years)));'
    
    array(4) {
      [""]=>
      string(1) "-"
      [0]=>
      int(14)
      [1]=>
      int(15)
      [2]=>
      int(16)
    }
    

    因此,您的 $years 数组在合并期间会被重新索引。当使用 + 运算符时:

    maerlyn@biliskner:~$ php --run '$years=range(14,16);var_dump(array("" =>  "-") + array_combine($years,$years));'
    
    array(4) {
      [""]=>
      string(1) "-"
      [14]=>
      int(14)
      [15]=>
      int(15)
      [16]=>
      int(16)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-12
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      相关资源
      最近更新 更多