0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Symfony handson lesson-3

Posted at

フォーム

フォームからユーザ入力をさせる

インストール

  • composer require symfony/form

最も簡単なフォーム

  • デフォルトでは空白バリーションがある
  • デフォルトでは同じURLに送信される
    スクリーンショット 2023-05-20 16.38.53.png
Controller.php
public function add(): Response {
    $form = $this->createFormBuilder()
        ->add('title')
        ->add('text')
        ->add('submit', SubmitType::class, ['label' => 'save'])
        ->getForm();

    return $this->renderForm(
        'form.html.twig', 
        [
            'form' => $form
        ]
    );
}
form.html.twig
{{ form(form) }}

フォームの送信処理

フォーム送信のためにフォームをレンダリング

  • アクション内の現在のリクエストにアクセス
  • リクエスト中に送信されるデータをフォームに取得させる
  • バリデーションを加えると良い
$microPost = new MicroPost();
$form = $this->createFormBuilder($microPost)
    ->add('title')
    ->add('text')
    ->add('submit', SubmitType::class, ['label' => 'save'])
    ->getForm();

$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
    $post = $form->getData();
    $post->setCreated(new DateTime());
    $posts->save($post, true);
}

フォーム送信時のフラッシュメッセージ・リダイレクト

フラッシュメッセージは1リクエストにつき1つ

// add a flash
$this->addFlash('success', 'success!!');

// redirect
return $this->redirectToRoute('micro_post_index');

フォームのカスタマイズ

Twigを変更して色々カスタマイズが可能

フォームクラスの作成

symfony console make:form

  • 自動でフォームクラスを生成
  • FormType名を入力
    • Entityの名称に準ずるFormTypeが作成される

その他

App\Entity\MicroPost object not found by the @ParamConverter annotation. のエラー

  • ルートにpriority: 2を追加
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?