Datetime型をformから登録をする際、年月日と時間の部分を別の表示形式で登録させたい。

800 views
Skip to first unread message

Yuichi Okada

unread,
May 14, 2012, 3:05:54 AM5/14/12
to symfony-...@googlegroups.com
度々お世話になります。岡田と申します。

表題の件でご相談させて下さい。

やりたいこととしては以下の通りとなります。

スケジュール登録フォームでユーザーに日程を入力させたいと思っています。
日付の入力はJQueryUIのDatepickerを使ってカレンダーをクリックさせて入力させたい。

①DBにはDatetime型で保存します。
②年月日の入力はJQueryUIのDatepickerでカレンダーをクリックさせて日付を選択させる
(フォームはテキストボックで出力)
③時間の部分ははセレクトボックスで選択
(1:00,1:30,2:00 のように30分毎のセレクトボックスで出力)

DateTimeのdate部とtime部分に分けてフォームを表示するあたりはいけたのですが、
フォームからモデルにマッピングするbindRequestあたりでこけています。

フォームから渡ってきた値を書き換えてDatetimeにマッピングするするしかないのでしょうか。
それとも何かもっと上手くやる方法はあるものなのでしょうか?

お手数をおかけ致しますが、ご教授の頂けますと幸いです。
それではよろしくお願い致します。

岡田祐一

ganchiku

unread,
May 15, 2012, 7:29:38 AM5/15/12
to 日本Symfonyユーザー会
大野です。

想像なのですが、こういう方法はどうでしょう?

Entity に public の event_time などの変数を用意して、時間はそこに格納。
PrePersist などで保存直前に 日にちと時間を合算する。

なんとなく、これでできそうかな、と。
勘違いしていたら、すいません。

sotarok

unread,
May 15, 2012, 8:01:06 AM5/15/12
to 日本Symfonyユーザー会
こんにちは、 sotarok です。

うちも datepicker 的なやつとか timepicker 的なやつつかってます。

Symfony2 の datetime な Form を display: none で出して、
datepicker 的なやつ用に適当な input 要素を用意し、
change にひっかけて Symfony2 の Form (hidden なやつ) を更新してます。
見た目上の Form と Symfony2 で出してる見えてない Form を無理やり紐づけてる形ですね。

# 割と手抜きだけどすごく簡単です。

--

Yuichi Okada

unread,
May 15, 2012, 8:25:06 AM5/15/12
to symfony-...@googlegroups.com


2012年5月14日月曜日 16時05分54秒 UTC+9 Yuichi Okada:
Message has been deleted

Mitsumune Tomohiro

unread,
May 15, 2012, 8:43:12 PM5/15/12
to symfony-...@googlegroups.com
Kiskeです。

date fieldなformをwidget => 'single_text'でテンプレートにレンダリングして、
そこにdatepickerの処理をbindすればOKだと思います。

コードはこんな感じです。

Form\XXXType.php

        $builder->add('deadline', 'date', array(
            'widget' => 'single_text',
            'format' => 'yyyy-MM-dd',
            'label' => '締切日',
        ));

JavaScript
    $('#XXX_deadline').datepicker({
        minDate: 0,
        dateFormat: 'yy-mm-dd',
        defaultDate: '+30d'
    });


2012年5月15日 20:57 Sotaro KARASAWA <sota...@gmail.com>:
こんにちは、 sotarok です。

うちは Symfony2 の datetime な Form を display: none で出して、

datepicker 的なやつ用に適当な input 要素を用意し、
change にひっかけて Symfony2 の Form (hidden なやつ) を更新してます。
見た目上の Form と Symfony2 で出してる Form を無理やり紐づけてる形ですね。

# 割と手抜きだけどすごく簡単です。

--

2012年5月15日 20:29 ganchiku <ohno...@gmail.com>:
> --
> -------------------
> Symfonyに関する疑問・質問、ユーザー会の活動やサイトに対するご意見、その他雑談など、お気軽にMLへ投稿してください!
>
>
> 日本Symfonyユーザー会
> http://www.symfony.gr.jp/
>
> 日本Symfonyユーザー会メーリングリスト
> http://groups.google.com/group/symfony-users-ja

--
-------------------
Symfonyに関する疑問・質問、ユーザー会の活動やサイトに対するご意見、その他雑談など、お気軽にMLへ投稿してください!


日本Symfonyユーザー会
http://www.symfony.gr.jp/

日本Symfonyユーザー会メーリングリスト
http://groups.google.com/group/symfony-users-ja



--
Tomohiro Mitsumune
email: tmits...@gmail.com

Shin Ohno

unread,
May 15, 2012, 9:26:47 PM5/15/12
to symfony-...@googlegroups.com
大野です。

私がイメージしていたのは、 Kiske さんと同じですね。
そして、時間に関するフィールドを PrePersist でくっつける感じでした。


2012/5/16 Mitsumune Tomohiro <tmits...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages