Symfony2「カスタマイズ編(5) フォームクラスの作成」

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);

    // ...
}
// ...

}

【ブラウザで確認】

以前の動作と同様かを確認する

【参考】

ref. カスタマイズ編(5) フォームクラスの作成