sfWidgetFormInputCheckbox に問題があります。チェックボックスがオフの場合、データベースに false を保存しません。
残念ながら、私のフィールドはブール値であり、表示される値にバグはありません。
次のようにデフォルト値を設定します$this->setDefault('status', false);
。どちらも機能しません。
私のウィジェット:
$this->widgetSchema['SUSPENSION_TEMP'] = new sfWidgetFormInputCheckbox();
$this->validatorSchema['SUSPENSION_TEMP'] = new sfValidatorBoolean(array('required' => false));
デフォルト :
$this->setDefault('SUSPENSION_TEMP', false);
何か案は ?
編集:
チェックボックスがチェックされている場合、1 を保存します。チェックを外して保存するときは、データベースの値を変更しないでください。したがって、一度チェックすると、データベースの値は常に 1 になります (私のコードでは true です)。
編集2:
追加する手がかりが 2 つあります。フィールドが schema.xml 内の整数である場合、両方の値が機能しますが、表示される値に問題があります (チェックボックスが 0 の値にチェックされている)。ここで、 he フィールドはブール値です。
セッターは、チェックボックスがチェックされている場合は「on」、チェックされていない場合は true の 2 種類の値を受け取ります。フォームでデフォルト値を false に設定し、セッターをオーバーライドしようとしました。どちらも機能しません。
セッターの作業を意味しますが、理由は不明ですが、基本的なシーアが間違った値で直後に呼び出されます。
編集3:
わかりました、私は問題の一部を理解しています。チェックボックスがオフの場合、セッターは呼び出されません。mコードがvar_dump()を表示したためだと思いました。後でアーカイブ目的でこのオブジェクトの古いバージョンをコピーしたためです。
しかし、symfony はフィールドがレンダリングされたことを検出する必要がありますが、そうではありません。どうしてか分かりません。HTMLで理由を知っていますが、明らかにsymfonyは「ねえ、ここにチェックボックスを追加します」と自分に言い聞かせることができるはずです。
これを行うエレガントな方法はありますか、それとも手で確認する必要がありますか?