春咲さんのメモ。

自分メモ的な。主にPHPについて。github:mindlessdoll(冬眠してるけど)

Symfony2 Formではまったこと

Actionの分け方がまずったらしい。つい癖で、InputとConfirmとCompleteと作ったんだけど、一つのActionでヨロと言われた。確かに調べてるとそんな感じのが多いのでそのあたりは右に倣う。

しかし、確認画面の作り方がよくわからない。と、いうかTwigでどう書くの??

今回は取り急ぎで動かしたかったので、Entityは省略

Controller側

/**
 * @access public
 */
public function caseAction(Request $request)
{
    $formFactory = Forms::createFormFactoryBuilder()
        ->addExtension(new HttpFoundationExtension())
        ->getFormFactory();
    
    $form = $formFactory->createBuilder()
        ->add('task', 'text')
        ->getForm();
    if ($request->getMethod() == 'POST') {
        $form->bind($request);

         return $this->render('SpBundle:Inquire:confirm.html.twig',
                array('data' => $form->getData(),
          ));
    }
    
    return $this->render('SpBundle:Inquire:input.html.twig', array(
            'form' => $form->createView(),
    ));
}

Twig側

    {{ data.task }}

これでいいらしい。今回はとりあえず表示されればOK。登録は別API使うからDctrineは関係しません。最初、bindRequestでエラーになってbindに変えました。2.3と2.0でどっちがどっちに変わったか忘れてたw

あ、ついでに…routingの設定で。

      requirements: 
       _method: POST|GET

これ忘れずに。忘れてエラー?!(?--)!(--?)?!ってなった。

 

hiddenで値持たせておきたいときは、Twigに渡す引数にform追加して

{{ form_widget(form.task, {type: 'hidden'}) }}

で、おk