2

プロジェクトに Symfony 1.3.x を使用しています。

私のフォームの 1 つの configure() メソッドには、次のコードがあります。

'terms' => new sfWidgetFormInputCheckbox(array('value_attribute_value'=>'terms', 'default' => false )),

アイデアは、フォームが検証される前にユーザーがチェックする必要があるチェックボックス (デフォルトではチェックされていない) をユーザーに提示することです。

問題は、フォームを表示すると、チェックボックスが常にチェックされている (つまり、選択されている) ことです。これは、チェックボックスでユーザーの確認を強制するという目的を無効にします。

これを解決する方法を知っている人はいますか?

4

3 に答える 3

3

Symfony のデフォルトのフォーム値には、基本的に文書化されていない階層があります。それは次のとおりです (数値が大きいほど優先順位が高くなります)。

  1. ウィジェットのデフォルト値。
  2. フォームが新しいレコードの場合は、レコードの値。
  3. ウィジェットのフォーム レベルのデフォルト (はい、ウィジェットとフォームは SEPARATE デフォルトを追跡できます)。
  4. フォームが既存のレコード用の場合は、レコードの値。

私の推測では、2、3、または 4 のいずれかがウィジェット レベルのデフォルトに取って代わります。sfFormDoctrineset default がcallsの後に呼び出されると、 3. が 4. に取って代わることに注意してくださいupdateDefaultsFromObject

于 2010-11-11T14:03:48.977 に答える
2

さらにいくつかの例

$this->widgetSchema['listing_status'] = new sfWidgetFormInputCheckbox(array(),array('value'=>1));
$this->setDefault('listing_status',1);
于 2011-05-04T10:55:25.840 に答える
2
$this->setDefault("is_tested", false);  // unchecked checkbox
于 2011-01-17T19:31:46.073 に答える