PHPフレームワークSymfony2 開発チュートリアルをSymfony2.3.9でやった時に引っかかるところ

バージョンによる違いや、ミスと思われるところがいくつかあったので書いておきます。
PHPフレームワークSymfony2 開発チュートリアル
1.5セッションの導入
bindRequestとなっているところをbindに変える
いくつかあります。

1.5.1オブジェクトの登録

productActionと、productPostActionについてのみコードが書かれていて、
adressActionとadressPostActionについては、「同様の変更」とだけ書かれていて、具体的なコードが乗っていません。
しかし、product_idとquantityをただname,adress,phoneに変えただけでは一つ目のページのsessionが2つ目のsessionに上書きされてしまいます。

そこで、
$this->container->get('session')->set('drinkOrder',new drinkOrder());
をsetではなく、
$this->container->get('session')->get('drinkOrder');
にする必要があります。

Resources/views/DrinkOrder/confirmation.html.twig
の最後の行に
<form action="{{ path('OscDrinkOrderBundle_product') }}" method="post" {{ form_enctype(form) }}>
とありますが、正しくは
<form action="{{ path('OscDrinkOrderBundle_confirmation') }}" method="post" {{ form_enctype(form) }}>
でしょう。


use Symfony\Component\Form\FormBuilder;
となっているところは、
use Symfony\Component\Form\FormBuilderInterface;
に。また、これと合わせて
public function buildForm(FormBuilder $builder, array $options)
となっているところを
public function buildForm(FormBuilderInterface $builder, array $options)
に変更。


Formを別の場所に書く部分では、
ProductPostAction

$form = $this->createFormBuilder(new DrinkOrder())
            ->add('product_id', 'choice', array( 'choices' => array('1' => 'BlueBull 128個入ケース', '2' => 'GreenBull 128個入ケース')))
            ->add('quantity', 'text')
            ->getForm();

$form = $this->createForm(new ProductDrinkOrderType(),$this->container->get('session')->get('drinkOrder'));


AdressPostActionも
$form = $this->createFormBuilder($this->container->get('session')->get('drinkOrder'))
->add('name','text')
->add('adress','text')
->add('phone','text')
->getForm();

$form = $this->createForm(new AdressDrinkOrderType(),$this->container->get('session')->get('drinkOrder'));
に変更しないと、confirmで内容が表示されません。

1.8 ページフローの制御とCSRF対策


set('state', self::STATE_CONFIRMATION);
等のsetが
何故かsetFlashになっていたり、
getがgetFlashになっていたする。

この場面でflashは使っていないと思う。

そろそろsyntaxhighliter導入しようかな…

コメント

このブログの人気の投稿

2次元配列のコピー::JavaScript

iframeの利点と欠点

chromyを実行するとエラー:"Failed to launch a browser"が出る