sfWidgetFormTimeのフォーマット指定
最近symfonyばかり触っているが、今日もハマったところのメモ
sfWidgetFormTimeを利用した日付と時刻の入力フォームのフォーマットを変更しようとしても出来なかった。
ダメだったコード。
abstract class BaseFormPropel extends sfFormPropel { public function setup() { parent::setup(); $this->widgetSchema->getFormFormatter()->setTranslationCatalogue('sf_admin'); list($year, $month, $day) = explode("/", date('Y/n/d')); list($hour, $minute, $second) = explode(":", date('H:i:s')); foreach ($this->getWidgetSchema()->getFields() as $name => $widget) { switch (get_class($widget)) { case 'sfWidgetFormDateTime': $widget->setOption('date', array('format' => '%year%年%month%月%day%日')); $widget->setOption('time', array('format' => '%hour%時%minute%分')); $widget->setOption('default', array( 'year' => $year, 'month' => $month, 'day' => $day, 'hour' => $hour, 'minute' => $minute)); break; case 'sfWidgetFormDate': $widget->setOption('format', '%year%年%month%月%day%日'); $widget->setOption('default', array( 'year' => $year, 'month' => $month, 'day' => $day)); break; case 'sfWidgetFormTime': $widget->setOption('format', '%hour%時%minute%分'); break; } } } }
日付のフォーマットは変更されるが、時刻のフォーマットが「%hour%:%minute%」のままになってしまう。
で、ソースを覗いていたところ、「format_without_seconds」という設定を発見。
いままで「format_without」を利用してたが、分を利用しない場合はどうやらコレが正解っぽい。