2

次の項目を含むテーブルがあります。

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

1 に答える 1

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
));

詳しくはこちらをご覧ください


更新:バリデーターと同様のことも行う必要があります。デフォルトでは、送信された値としてPKが期待されます。別の列が必要であることを「伝える」必要があります。次のようなもの(テストされていません):

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

詳細はこちら

于 2013-01-17T15:41:35.687 に答える