Help us understand the problem. What is going on with this article?

【初めてのSymfony2】Bundleをgenerateしてみる

More than 5 years have passed since last update.

(正直)あんまり乗り気ではないが、symfony2を取り扱ってみることにした時のメモ
このBundleってのが自分はまだしっくり来ないんだなー・・・・

前にやったこと

環境

vagrantで構築

  • Guest OS
    • CentOS6.4 x86

事前準備に必要なもの

出来上がるもの

参考にしたサイト

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.phpapp/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 が何に使っていいのかよくわからない・・・・

ryurock
認定スクラムマスター 認定プロダクトオーナー http://www.scrumalliance.org/community/profile/rkimura2
https://github.com/ryurock
visasq
ビザスクは「知見と、挑戦をつなぐ」をミッションに、世界で1番のナレッジプラットフォームをつくっています。 様々なニーズにつなぐことで、実際に経験したことで得られた知識や意見を、知見として価値最大化します。組織、世代、地域を超えて、知見を集めつなぐことで、世界中のイノベーションに貢献します。
https://visasq.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away