LoginSignup
2
4

More than 5 years have passed since last update.

1 / 7

SymfonyのFormの簡単な解説です。

詳細は公式ドキュメントを参照してください。

ステップは3つです。
1. Entityを作成
2. ControllerでFormの作成
3. 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ライセンスに従います。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4