😀
【初めてのSymfony2】Bundleをgenerateしてみる
(正直)あんまり乗り気ではないが、symfony2を取り扱ってみることにした時のメモ
このBundleってのが自分はまだしっくり来ないんだなー・・・・
前にやったこと
環境
vagrantで構築
- Guest OS
- CentOS6.4 x86
事前準備に必要なもの
- PHP5.3以上
- 自分は PHP 5.6.0でトライ
- phpenvで入れたい方はvirtualbox(centos)でphpenv+php-buildインストールメモ(5.3,5.4変更確認まで)を参考に入れてください
-
composer
- 入れていない方はcomposerを使ってみた時のメモを参考にでもしてください
出来上がるもの
参考にしたサイト
generate:bundleを使って見る
その前にhelpを読んでみる
/path/to/leaning-symfony2
php app/console generate:bundle --help
helpを読んでなんとなく掴めてきたので作ってみる
作るBundle
管理画面用のログイン画面のBundleを作る
/path/to/leaning-symfony2
php app/console generate:bundle
#namespace
Bundle namespace: Admin/LoginBundle
#bundle名
Bundle name [AdminLoginBundle]:LoginBundle
#Bundleのディレクトリ
Target directory [/synced/leaning-symfony2/src]:
#configの種類
Configuration format (yml, xml, php, or annotation): annotation
# 他のbundleの構成の必要なディレクトリも作成するか?
Do you want to generate the whole directory structure [no]?
"annotation" format.
# bundleの作成の最終確認
Do you confirm generation [yes]?
# kernelをupdateするか?
Confirm automatic update of your Kernel [yes]?
# routingをupdateするか?
Confirm automatic update of the Routing [yes]?
ざっとこんな感じで作成した
どんなものが作成されたのか確認してみた
generateコマンドってのが何をつくるのかがよくわからないので確認してみる
/path/to/leaning-symfony2
git st
# On branch add_bootstrap
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: app/AppKernel.php
# modified: app/config/routing.yml
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/Admin/
no changes added to commit (use "git add" and/or "git commit -a")
app/AppKernel.php
と app/config/routing.yml
が変更されて src/Admin
が追加されている
app/AppKernel.php
/path/to/leaning-symfony2
git diff app/AppKernel.php
diff --git a/app/AppKernel.php b/app/AppKernel.php
index bccaf38..9536966 100644
--- a/app/AppKernel.php
+++ b/app/AppKernel.php
@@ -17,6 +17,7 @@ class AppKernel extends Kernel
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
new AppBundle\AppBundle(),
+ new Admin\LoginBundle\LoginBundle(),
);
if (in_array($this->getEnvironment(), array('dev', 'test'))) {
app/AppKernel.php
はクラスローダー的な役割なのかな
app/config/routing.yml
/path/to/leaning-symfony2
git diff app/config/routing.yml
diff --git a/app/config/routing.yml b/app/config/routing.yml
index 8eadc31..cd7a99d 100644
--- a/app/config/routing.yml
+++ b/app/config/routing.yml
@@ -1,3 +1,8 @@
+admin_login:
+ resource: "@LoginBundle/Controller/"
+ type: annotation
+ prefix: /
+
app:
resource: "@AppBundle/Controller/"
type: annotation
resourceの設定が追加されたみたい
src/Admin
/path/to/leaning-symfony2
rc/Admin/
└── LoginBundle
├── Controller
│ └── DefaultController.php
├── DependencyInjection
│ ├── Configuration.php
│ └── LoginExtension.php
├── LoginBundle.php
├── Resources
│ ├── config
│ │ └── services.xml
│ └── views
│ └── Default
│ └── index.html.twig
└── Tests
└── Controller
└── DefaultControllerTest.php
MVCとそれっぽい設定ファイル郡が追加されたみたい
最後に
BUndle直下にある(今回で言うと src/Admin/Bundle/LoginBundle/AdminLoginBundle.php
が何に使っていいのかよくわからない・・・・
Discussion