Symfony2「カスタマイズ編(5) フォームクラスの作成」
2011年12月13日Symfony2「カスタマイズ編(5) フォームクラスの作成」
フォームコントローラの生成
フォーム生成部の分離
【フォームクラスの作成】
Postエンティティに対するPostTypeフォームクラスの作成
$ mkdir src/My/BlogBundle/Form
$ vim src/My/BlogBundle/Form/PostType.php
namespace My\BlogBundle\Form;use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;class PostType extends AbstractType
{
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add(‘title’)
->add(‘body’)
;
}public function getDefaultOptions(array $options) { return array( 'data_class' => 'My\BlogBundle\Entity\Post', ); } public function getName() { return 'post'; }
}
【コントローラの修正】
Defaultコントローラの修正
$ vim src/My/BlogBundle/Controller/DefaultController.php
use My\BlogBundle\Form\PostType;class DefaultController extends Controller
{
// …public function newAction() { // フォームのビルド
// $form = $this->createFormBuilder(new Post())
// ->add(‘title’)
// ->add(‘body’)
// ->getForm();
$form = $this->createForm(new PostType(), new Post());// ... } // ... public function editAction($id) { // ... // フォームのビルド
// $form = $this->createFormBuilder($post)
// ->add(‘title’)
// ->add(‘body’)
// ->getForm();
$form = $this->createForm(new PostType(), $post);// ... } // ...
}
【ブラウザで確認】
以前の動作と同様かを確認する