EC-CUBEのFormでよく見かけるcreateBuilderメソッドを調べた。
例えば管理画面の商品を扱うコントローラ内で下記のような使われ方をしている。
$builder = $app['form.factory']
->createBuilder('admin_product', $Product);
このcreateBuilderメソッドに関しては、src/Eccube/Application/ApplicationTrait.phpに下記の記述で定義されている。
/** FormTrait */
/**
* Creates and returns a form builder instance
*
* @param mixed $data The initial data for the form
* @param array $options Options for the form
*
* @return FormBuilder
*/
public function form($data = null, array $options = array())
{
return $this['form.factory']->createBuilder('form', $data, $options);
}
第1引数にはFormTypeを指定する。これでFormTypeで定義した項目が使用できるようになる。(上の例だとhtmlのinputのnameに”form[~~]”という形式で指定される)
第2引数にはデータ。このデータをDBに保存したりする。
第3引数のオプションには、ラベルやEntityとのマッピングを定義する。