こんにちは!Symfonyアドベントカレンダー 21日目です ![]()
![]()
今回は、Symfony4.4から新しく使えるようになったWeekType Fieldを使ってみようと思います。
WeekType Fieldとは?
<input type="week">に対応したFormTypeです。
そもそも、<input type="week">とは?
<input>要素の week 型は、年と、その年の ISO 8601 週番号 (つまり、第1週から第52または53週) を簡単に入力することができる入力欄を生成します。
詳細は、MDNのドキュメントをご参照ください。https://developer.mozilla.org/ja/docs/Web/HTML/Element/Input/week
WeekType Fieldを使ってみる
<input type="week"> 自体よくわかっていないですが、とりあえず使ってみます。
デフォルトで使ってみる
- src/Form/TaskType.php
class TaskType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('dueDate', WeekType::class, [
'input' => 'array', //default
'widget' => 'single_text' //default
])
->add('submit', SubmitType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Task::class
]);
}
}
こんな感じで、カレンダーから選択できます!便利〜 ![]()
input type="week"となっています!!!(GoogleChrome)

オプションをいろいろ使ってみる
-
'widget' => 'choice':<select>になります。(GoogleChrome)

-
'widget' => 'text':input type="number"になります。(GoogleChrome)

最後に
使い所はパッと思いつきませんが、使えるところには使えそうですね
(週単位の検索など)
ただ、ブラウザの互換性についてSafariやFirefoxに未対応だったりするので、'widget' => 'choice'や'widget' => 'text'を使うのが良さそうです。
参考
- https://symfony.com/blog/new-in-symfony-4-4-week-form-type