バンドル
StratdashBundle の機能を使う場合、配下のCore機能の多くのクラスを継承した機能郡でバンドルを作成します。
ですが、ほとんどの継承処理や基本的な処理は SdGenerateBundleCommand により自動的に行われます。
ここでは、自動生成されたコードを前提に、主にWebページを作る際に意識する必要のあるルールや、カスタマイズ箇所・内容 について記載します。
バンドル準備(Symfony2)
バンドルは、app/AppKernel.php 内で AppKernel::registerBundles() に バンドルクラス情報 を追記することで有効になります。
例)
class AppKernel extends Kernel
{
public function registerBundles(){
$bundles = array(
:
new TinyWorld\StartdashBundle\TinyWorldStartdashBundle(),
:
);
return $bundles;
}
:
また、app/config/routing.yml に バンドルルートプレフィックス情報を追加します。
例)
:
tinyworld_startdash:
resource: "@TinyWorldStartdashBundle/Resources/config/routing.yml"
prefix: /startdash/
:
- 記号なしリストバンドルルートプレフィックス
例示中:tinyworld_startdash は好きに付けられますが、基本的に バンドルクラス名のスネークケース です。
ただし StartdashBundleでのルールは後述します。 - リソース
例示中:“@TinyWorldStartdashBundle/Resources/config/routing.yml” は対象バンドル内の routing.yml を指定します。 - プレフィックス
例示中:/startdash/ は、対象バンドルにアクセスする場合に先頭に付けるURLを指定します。
これで、バンドル・バンドルルートプレフィックスともに有効になり、ブラウザでアクセスするSymfony2 の バンドルの準備は完了です。
バンドルクラスカスタマイズ(StartdashBundle)
バンドルクラス は バンドルに1つだけある、バンドルを代表するクラスです。
StartdashBundle を継承したクラスでは、バンドル内で共通する(コントローラを跨いだ)情報を保持し、共通する処理を実施します。
バンドル準備が終わったら、StartdashBundle に向けたバンドルクラスカスタマイズを行います。
- 起動時準備処理
StartdashBundle::boot() をオーバライドして実施します。
バンドル初期化時にコールされ、(Requestベースではない)バンドル情報の初期化を行います。- 初期情報設定
バンドル自身、もしくはバンドル内で共通する各種情報を設定する他、名称等が自動生成結果(後述)と異なる場合の補正設定を実施します。 - バンドル所属ページの登録
バンドルに所属するページを登録します。
ページ情報は SdPage で生成し、StartdashBundle::addPage() をコールして登録します。
※ 内部では、指定ルート名 に対し、SdPageインスタンス を保持する形で管理されます。
StartdashBundle::boot() は Bundle::boot() をオーラライドしていて Kernel から AppKernel に登録したバンドル順にコールされます。 同じ情報を更新する場合、後に実施した方が有効(上書き)になります。 上記を踏まえ、その初期化処理の適切なタイミングを考慮してください。 ※ 他での設定を優先するならコンストラクタで行う、等 * 実行時準備処理\\ StartdashBundle::update() をオーバライドして実施します。\\ 実行コントローラが確定した後、コントローラ準備処理(StartdashController::prepare())前にコールされ、バンドル情報の更新を行います。\\ こちらは現状は特にルールはないため、実装するコントローラの処理によって便利であれば処理を記載します。
※ 実行されるタイミングはStartdashListener の 流れ を参照して下さい。