Symfony

【Symfony2.3】テストでログイン状態をシミュレートする。

公式にわかりやすい例を見つけたのでペタリ。

http://symfony.com/doc/current/cookbook/testing/simulating_authentication.html

基本的にこのまま書けばログインは可能。
実際にはUsernamePasswordTokenクラスのインスタンスを生成する際、
第1引数にユーザーエンティティをセットしたほうがいろいろと都合がよい。
※ほかの場所でget(‘security.context’)->getToken()->getUser()とかやってる箇所があるとエラー吐くので。

 

【Symfony2.3】UnitTestなどからFixtureをロードする。

setUp()メソッドなどで下記のようにする。

$loader = new Doctrine\Common\DataFixtures\Loader;
$loader->loadFromDirectory('/path/to/MyDataFixtures');
$purger = new Doctrine\Common\DataFixtures\Purger\ORMPurger($em);
$executor = new Doctrine\Common\DataFixtures\Executor\ORMExecutor($em, $purger);
$executor->execute($loader->getFixtures());

詳細は下記公式を参照。

https://github.com/doctrine/data-fixtures#readme

 

【Symfony2.3】DoctrineFixturesの中でContainerを使う。

こうすればいい。(URL参照)

http://symfony.com/doc/2.3/bundles/DoctrineFixturesBundle/index.html#using-the-container-in-the-fixtures

 

【Symfony2.3】でCSVダウンロード機能を実装する。

際に参考にしたんだけど、むしろ参考になったのは改行コードの置換部分。

http://soudai1025.blogspot.jp/2014/06/symfony2csv.html

    private function convertArrayToCsv($list)
    {
        $fp = fopen('php://temp', 'r+b');
        foreach ($list as $fields) {
            fputcsv($fp, $fields);
        }
        rewind($fp);
        $tmp = str_replace(PHP_EOL, "\r\n", stream_get_contents($fp));
        return $tmp;
    }

$listはCSVの連想配列データね。

 

【Symfony2.3】バリデーションの書き方と使えるメソッドまとめ。

http://symfony.com/doc/2.3/reference/constraints.html

いつも通り公式。

 

【Symfony2.3】web/bundlesに対してシンボリックリンクを張る。

各バンドル内のResources/public内にweb/bundlesディレクトリからシンボリックリンクを張る方法。

php app/console assets:install web --symlink

 

【Symfony2.3】UnitTestを作成する。

まずはPHPUnitをインストールする。

https://phpunit.de/getting-started.html

ソースは基本的に公式を上から読んで作ればおk。

http://docs.symfony.gr.jp/symfony2/book/testing.html

https://phpunit.de/manual/current/ja/installation.html

このページのアサーションメソッドのまとめがくそ便利。

https://phpunit.de/manual/current/ja/appendixes.assertions.html

あとアノテーションもたくさんあって便利。

https://phpunit.de/manual/current/ja/appendixes.annotations.html

 

【Symfony2.3】cahceとlogフォルダに権限を与える例のコマンド。

よく見に行くのでメモ。

$ APACHEUSER=`ps aux | grep -E '[a]pache|[h]ttpd' | grep -v root | head -1 | cut -d\  -f1`
$ sudo setfacl -R -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:$APACHEUSER:rwX -m u:`whoami`:rwX app/cache app/logs