Symfony2のエラーページのカスタマイズ

PR7になってからフレームワークでエラーページに謎のキャラクターが出現するようになりました。

でも、キャラクターと言えばSymfonyにはしんふぉにゃんがいます。何それ?ってかたはsymfonyの非公式マスコットが作成されたようです - モノノフ日記を参照。

というわけで、エラーページをカスタマイズしなくてはという何か昔に似たようなことをやった気がしなくもありませんが、Symfony2の調査がてらやってみました。

どうやって拡張するか

「画像を上書きすればできるし」という声も聞こえますが、まずはドキュメントを読んでみます。
How to customize Error Pages (The Symfony CookBook)
すぐに見つけました。しかし、これで出来ると思いきやこの通りやっても出来ません。バージョンアップのどこかでパスが変わったようです。
大丈夫。全く問題ありません。こんなことはまだまだ軽少、すり傷です。


そしてソースを追った結果、正しいパスも分かったのですがそんなことを意識しなくても済むようにバンドルを作成してみました。

インストール方法

  • 手元にSymfony2 Standard Edition PR7 をダウンロードしてきます。
  • SymfonyanBundleをcloneしてきます
$ git clone git://github.com/brtriver/SymfonyanBundle.git src/Acme/SymfonyanBundle
  • app/AppKernel.phpにバンドルを追加します。
        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Symfony\Bundle\WebConfiguratorBundle\SymfonyWebConfiguratorBundle();
            $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
            $bundles[] = new Acme\SymfonyanBundle\SymfonyanBundle(); // <= 追加
        }
  • これでsymfonyanコマンドが利用できるかどうかを確認します。
$ ./app/console
...
symfonyan
  :exception-install           Change the icon of the exception page to Symfonyan
  :welcome-install             Change the welcome page to Symfonyan

もし、エラーになる場合はキャッシュが邪魔してる可能性があるのでsudo chmod -R 0777 ./app/cache で。

  • SymfonyanBundleで用意したエラーページが呼び出されるようにコマンドを叩くだけ
$ ./app/console symfonyan:exception-install --symlink
$ ./app/console assets:install web --symlink

結果

開発環境での404エラーページ

ほら、エラーで残念なはずがこんなに緩い感じに。


そして、本番環境の質素な404エラーページも
[before]



こんな感じに
[after]

おまけ

以下のコマンドを叩けば

$ ./app/console symfonyan:welcome-install --symlink

インストール直後の画面にも....
[before]


[after]

Let's enjoy Symfony!