sfWidgetFormDoctrineChoice并选择列表值

时间:2013-01-17 14:15:44

标签: php symfony1 symfony-1.4 symfony-forms

我有一个包含以下项目的表格:

id | value
 1 |  12
 2 |  14
 3 |  16

我正在使用sfWidgetFormDoctrineChoice小部件,其中包含以下内容:

  $this->widgetSchema['value'] = new sfWidgetFormDoctrineChoice(array(
        'model'=>'TemplateFontSize',
        'add_empty'=>'Please Select Font Size', 
        'expanded' => false, 'multiple' => false
  ));

这将在HTML中输出以下内容

<select>
  <option value="1">12</option>
  <option value="2">14</option>
  <option value="3">12</option>
</select>

理想情况下,我希望value=""值为值,即

<select>
  <option value="12">12</option>
  <option value="14">14</option>
  <option value="16">12</option>
</select>

小部件可以实现吗?

1 个答案:

答案 0 :(得分:4)

在窗口小部件配置中使用key_method param。

  

用于显示对象键的方法(默认为getPrimaryKey)

$this->widgetSchema['value'] = new sfWidgetFormDoctrineChoice(array(
  'model'      =>'TemplateFontSize',
  'key_method' =>'getValue',
  'add_empty'  =>'Please Select Font Size', 
  'expanded'   => false,
  'multiple'   => false
));

查看更多here


更新:你还需要做类似验证器的事情。默认情况下,它期望PK作为提交值。你需要“告诉”它应该期待另一个列。像(尚未测试)的东西:

$this->validatorSchema['value'] = new sfValidatorDoctrineChoice(array(
  'model'      =>'TemplateFontSize',
  'column'     => 'value'
));

更多here