Symfony2の便利なコマンドと便利帳

キャッシュ削除

コマンドのオプションの意味がよくわからないんですが、これでだいたい消える。
PHPのバージョン分けとかしている場合、cliになっているやつを使うときとかは絶対パスでPHPを指定すればいいです。
php app/console cache:clear --no-warmup
dev環境とprod環境のぞれぞれのキャッシュ削除はこんな感じらしい。
php app/console cache:clear --env=dev
php app/console cache:clear --env=prod
これがいいだのわるいだのって話をどこかで見かけたのですが、これでも全然問題ない。
rm -fR app/cache/dev/*
rm -fR app/cache/prod/*

バンドル作成

php app/console generate:bundle --namespace=Test/LoginBundle --format=yml
php app/console generate:bundle --namespace=[NAMESPACE]/[BUNDLENAME] --format=[YML/PHP]
名前空間とバンドル名を指定します。バンドル名はxxxxBundleにするのが慣例でバンドル名も大文字からはじめます。フォーマットはymlを選んでおくとドキュメントがたくさんあるので楽です。

バンドルの削除

コマンドではないけど、バンドルを作りすぎると削除しないとかなり汚い感じになってきますので。

  • app/AppKernel.phpに書かれているバンドルの行を削除
  • app/config/routing.ymlに書かれている(ルーティングされている)バンドルを削除 ※ここまででエラーは出なくなる
  • src以下の対象のバンドル(ディレクトリ以下)を物理削除
  • /usr/local/php5.4/bin/php app/console cache:clear --no-warmup

ルーティング一覧

php app/console router:debug
Routing(設定しているパス)一覧です。パスが重複すると先に読み込まれたものが後に読み込んだものを上書きするので指定のURLでアクセスしたときに意図しないページが表示される場合はたいていパスが重複しております。このコマンドでデバックしてみます。またサイトマップ的なものを作るのにも便利です。

指定のパスに一致するリーティングを表示

php app/console router:match /
router:match [PATH]で設定したルーティングの中身が確認できます。以下/(ルート)で検索した結果の例です。
Route "homepage" matches
[router] Route "homepage"
Name homepage
Path /
Host ANY
Scheme ANY
Method ANY
Class Symfony\Component\Routing\Route
Defaults _controller: AppBundle:Default:index
Requirements
Options compiler_class: Symfony\Component\Routing\RouteCompiler
Path-Regex #^/$#s

コマンドは自作のものを作成できます。
http://docs.symfony.gr.jp/symfony2/cookbook/console.html

gitでignoreするファイル

/web/bundles/
/app/bootstrap.php.cache
/app/cache/*
/app/config/parameters.yml
/app/logs/*
!app/cache/.gitkeep
!app/logs/.gitkeep
/build/
/vendor/
/bin/
/composer.phar