Symfony2 Formの続き
はい、絶賛はまり中です。
とりあえず、クラス化しました。
Controller
use hoge\fugaBundle\Entity\Inquire; use hoge\fugaBundle\Form\Type\InquireType; public function caseAction(Request $request) { $inquire = new Inquire(); $form = $this->createForm(new InquireType()); if ($request->getMethod() == 'POST') { $form->handleRequest($request); if ($form->isValid()) { return $this->render('fugaBundle:Inquire:caseConfirm.html.twig', array('data' => $form->getData(), 'form' => $form->createView(), )); } } return $this->render('fugaBundle:Inquire:caseInput.html.twig', array( 'form' => $form->createView(), )); }
Entity
namespace hoge\fugaBundle\Entity; class Inquire { protected $name; protected $pref; public function getName() { return $this->name; } public function getPref() { return $this->pref; } public function setName($name) { $this->name = $name; } public function setPref($pref) { $this->pref = $pref; } }
InquireType
namespace hoge\fugaBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; class InquireType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name'); $builder->add('pref', 'choice',array( 'choices' => array( 'tokyo' => '東京', 'saitama' => '埼玉', 'kanagawa'=> '神奈川', ), 'multiple' => false, 'expanded' => false, )); } public function getDefaultOptions(array $options) { return array('data_class' => 'hoge\fugaBundle\Entity\Inquire'); } public function getName() { return 'name'; } }
的な。このセットにたどり着くまでかなり時間がかかりました。あのね、文章読むのは好きなんだけど技術関係の文章読むのは不得意なのね…。流し読み的な。
とりあえず、これで、テキストボックスとプルダウンはできました。
あ、ついでにyml
validation.yml
hoge\fugaBundle\Entity\Inquire: properties: name: - NotBlank: { message: "入力してください!!!!!!" } pref: - NotBlank: ~
ってやってるんだけど。このmessageが出てくれなくて、大変困っております。
↓こんな感じが出るのね。ポップアップで。でもこれは必要としてないの…。もー!!!って感じでお盆休みに突入です…