symfony1.4.9で、sfWidgetFormDateの挙動が変
2011年3月17日 オフ 投稿者: KYOTable of Contents
仕様なのかどうか。。
深追いするのも面倒なので、回避方法のみ記載。
やりたかったのは、「日付フィールド(DBでDATE型、schemaではVARCHAR)に、デフォルト値(アクセス日)を指定」したかった。
同じようにはまった人もいたようだけど、解決はしてなさそう。
イメージしやすいように、やや前置き。
【前提条件】
- _form.phpを流用するので、新規(new)と編集(edit)が混在する
- 新規レコード追加(new)の場合は、そのアクセス日を設定したい
- 編集(edit)の場合は、 そのままレコードの値を使う
- テンプレートには、デフォルト値は特に指定したくない(結果:このポリシーを曲げることになる)
- 出来れば、action内からformオブジェクトのdefault値を設定したい
いろいろと調べた結果・・・
以下であれば、前提条件の1つを除き可能となった。
[shell] $ vim lib/form/Xxx.class.php ... $this->setWidgets(array( 'no' => new sfWidgetFormInputText(), 'date_at' => new sfWidgetFormDate(array( 'format' => $date_format, 'years' => array_combine($years, $years) ))); $this->setDefault('date_at', date('Y/m/d'));
【試してNGだったこと】
- actionから、getWidget()を利用してアクセス ーーー default値だけがセット出来ない
$widget = $this->form['date_at']->getWidget(); $widget->setDefault('2020/2/2'); // NG $widget->setOption('default', '2020/2/2'); //NG $widget->setOption('label', 'label'); //OK $widget->setOption('format', 'Y/m/d/'); //OK
カテゴリーSymfony