2013-01-17 91 views
2

我有一个项目表中以下内容:sfWidgetFormDoctrineChoice并选择列表值

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> 

这是可能的小部件?

回答

4

在您的小部件配置中使用key_method参数。

的方法,用来显示所述对象键(默认的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