Symfony

【Symfony2.3】requestオブジェクトからURLの情報を取得する。

色々あって便利。

例えばログインページで実行すると。

var_dump($request->getBasePath());
var_dump($request->getBaseUrl());
var_dump($request->getRequestUri());
var_dump($request->getUri());
var_dump($request->getUriForPath('/'));
string(0) ""
string(12) "/app_dev.php"
string(18) "/app_dev.php/login"
string(39) "http://example.com/app_dev.php/login"
string(34) "http://example.com/app_dev.php/"

的な感じで取得出来る。

【Symfony2.3】containerオブジェクトからrequestオブジェクトを取得する。

メモ。

$request = $this->container->get('request');

 

【Symfony2.3】KernelのWorkFlowに関して。

わかりやすい文献が公式にあったのでメモ。

http://symfony.com/doc/current/components/http_kernel/introduction.html

イベントの流れがとても把握しやすい。

 

【Symfony2.3】EventListenerで指定出来るイベントメモ。

現時点までに発見したもののメモ。(2014-06-09現在)

services:
    my.listener.before.filter:
        class: Hoge\FugaBundle\EventListener\ControllerListener
        arguments: ['@service_container']
        tags:
            - { name: kernel.event_listener, event: kernel.controller, method: piyo }
            - { name: kernel.event_listener, event: kernel.request, method: piyo }
            - { name: kernel.event_listener, event: kernel.response, method: piyo }
            - { name: kernel.event_listener, event: kernel.terminate, method: piyo }

    my.listener.pre.update:
        class: Hoge\FugaBundle\EventListener\EntityListener
        arguments: ['@service_container']
        tags:
            - { name: doctrine.event_listener, event: preUpdate }

    my.listener.pre.persist:
        class: Hoge\FugaBundle\EventListener\EntityListener
        arguments: ['@service_container']
        tags:
            - { name: doctrine.event_listener, event: prePersist }

随時更新。

 

【Symfony2.3】エンティティの更新前に処理を挟む。

メモ。

CakePHPでいうbefore filter的なやつ。

SymfonyだとEventListenerを用いて実現する。

詳しくは下記URLを参照。

http://rys.hatenablog.com/entry/2012/02/01/162949

 

【Symfony2.3】TwigのtransフィルターでHTMLタグをエスケープしないで出力する。

rawフィルターを併せて指定すればOK。

{{ '<h1>Hoge</h1>' | trans |  raw }}

 

【Symfony2.3】ではFormBuilderクラスをFormBuilderInterfaceに置き換える。

べし。

こうなっている部分を。

use Symfony\Component\Form\FormBuilder;
...
public function buildForm(FormBuilder $builder, array $options)

こうする。

use Symfony\Component\Form\FormBuilderInterface;
...
public function buildForm(FormBuilderInterface $builder, array $options)

 

【Symfony2.3】Twigのform_widget()メソッドでクラスを設定する方法。

というよりもattribute全般の付与方法。

{{ form_widget(form.name, { 'attr': {'class': 'my-form-class'} }) }}

twigってjsみたいにオブジェクトで指定するんだね。