SymfonyのFormの簡単な解説です。
詳細は公式ドキュメントを参照してください。
ステップは3つです。
- Entityを作成
- ControllerでFormの作成
- Formのレンダリング
Entityを作成
Entityはデータの箱で基本的にクラス変数とsetter, getterでできています。
フォームへ出力させるためにはsetterとgetterは必須です。
例えばタスクと期限を持つシンプルなTaskエンティティは以下のようになります。
src/AppBundle/Entity/Task.php
class Task
{
protected $task;
protected $dueDate;
public function getTask()
{
return $this->task;
}
public function setTask($task)
{
$this->task = $task;
}
public function getDueDate()
{
return $this->dueDate;
}
public function setDueDate(\DateTime $dueDate = null)
{
$this->dueDate = $dueDate;
}
}
ControllerでFormの作成
controllerでformを作成します。
下記の例のbuilderに対して add
している第二引数でフォームの型を指定します。
こちらで指定した型でレンダリングされます。
src/AppBundle/Controller/DefaultController.php
class DefaultController extends Controller
{
public function newAction(Request $request)
{
// Taskに対して例としてダミーデータをセットしています
$task = new Task();
$task->setTask('Write a blog post');
$task->setDueDate(new \DateTime('tomorrow'));
$form = $this->createFormBuilder($task)
->add('task', TextType::class)
->add('dueDate', DateType::class)
->add('save', SubmitType::class, array('label' => 'Create Task'))
->getForm();
return $this->render('default/new.html.twig', array(
'form' => $form->createView(),
));
}
}
Formのレンダリング
twigファイルにてFormをレンダリングします。
app/Resources/views/default/new.html.twig
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
するとこちらの画像のように出力されます。
時間があればもうちょっと追記するかも。
この記事およびコードはCreative Commons BY-SA 3.0ライセンスに従います。