こんにちは!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