SymfonyのFormType
Formを構成するclass
SymfonyのformBuilderの「classを使ってformを構成する」方で使う
SymfonyのAbstractTypeを継承している
ここでfieldの定義, Entityとのmapping, validationの記述などをする
基本的にはHogeTypeのような名前のclass
buildForm()の中で$builder->add()->add()->..で構成していくなど
雑に言うとfieldの集合
ややこしいが、fieldの一つ一つもFormTypeである
つまり、FormTypeの入れ子でFormが構成されている
FormType自体は、自分自身がどこで使われるかを意識してはいけない
buttonをfieldとして追加することができるが、責務上しないほうが好ましい ref
buttonを追加することで、抽象度が下がり再利用しづらくなる
buttonのlabelをどうするか?などはViewの責務なので、ここに書くべきではない
既存のFormTypeを拡張する
SymfonyのForm Type Extension
用意されているfieldを使う
SymfonyのBuilt-in Form Types
自作のfieldを定義する
それもFormTypeであるmrsekut.icon
新しいFormTypeを作って、親のFormTypeのadd()の中で指定するばいい
docs
properties
DIできるので割と自由に他のEntityを呼べる
methods
SymfonyのAbstractTypeに書いた
名前揺れ過ぎ問題
ここに書いている「form class」も同じ概念
紛らわしいmrsekut.icon
fieldとして使うformのことを「Form Types」とか「Field Types」とかと揺れてるのでマジで紛らわしい ref
実際formでもありfieldでもあるから仕方がない
FormBuilderでEntityを更新する
FormTypeを呼び出す
code:php
$post = new Post();
$form = $this->createForm(PostType::class, $post);
createNamedBuilder
createBuilderと同じでかつ、nameを指定できるbuilder
1
formのnameを指定
form_startで作成するとformタグのname属性がこれになる
たぶん
2
FormTypeを指定
FormType::classみたいにかけばいい 
3
data
初期値?
4
FormTypeに対するoptionを指定
add()
field名
field type
ただのtextやurl、ラジオボタン、などの指定をする
https://symfony.com/doc/3.4/forms.html#built-in-field-types
端折ってsymfonyに推測されることもできる
https://symfony.com/doc/3.4/forms.html#field-type-guessing
これいいのか?
後から読む人にとってはわかりにくい気がするが
field type option
第2引数で指定したfield typeごとにoptionがあるのでそれを指定する
例えばselect formの選択肢の指定とか
例えばrequiredの指定とか
端折ってsymfonyに推測されることもできる
https://symfony.com/doc/3.4/forms.html#field-type-options-guessing
これいいのか?
後から読む人にとってはわかりにくい気がするが
Checkbouxのmappedってなに?
Docsの下部がよくわからない #??
Setting the data_class
SymfonyのData Transformers
値の変換