[開発] 基本的なブートストラップリソースの組み込みとレイアウトの適用
別件でZend Framework 1.8をいろいろいじっているうちに、こっちをどういう順番でいじっていくか迷いが深くなってしまい、悪い方向に煮詰まってきてしまったので、頭を使わなくても済むレベルのところから手をつけることにした。
- 今後のアップデートなどのことを考えて、application.iniをapplication.ini.orgに変更。動かしたい場合は、必要に応じてapplication.iniにリネームしつつ、内容を環境に合わせて修正を。
- ZFが自動生成するerror.phtmlでショートタグを使っているので、それを除去しつつ日本語化。あとdoctypeとかをテンプレートに直書きしていたのを、ビューヘルパーを使うように修正。
- ブートストラップ内の初期化コードとして、
- Viewの初期化処理
- クラスのオートローダーの初期化処理(NetJockey_というネームスペースのクラスもオートローダーの対象として追加)
- アプリケーションローカルのモジュール(application/modelsとか)のオートローダー初期化処理。ローカルモジュールのネームスペースはMyにして、Zend_Db_TableによるORMはMy_DbTableに、マッパーはMy_Mapperに。
- 設定ファイルをあちこちで使い回しやすくするために、配列からZend_Config形式に変換しつつ、$bootstrap->getResource('config')とかZend_Registry::get('config')とかで取得できるように初期化。
- オートローダーの組み込みキャッシュ(要は読み込んだファイルをまとめてrequire_onceするphpファイルの生成)やZend_Db_Tableのスキーマキャッシュを行うためのキャッシュ関連初期化処理。キャッシュファイルの置き場も用意。キャッシュファイルの場所は設定ファイルに記述。
- 標準のDBリソースを使ったDB設定の追加。
- ビュー内でecho $this->escape()するのはいやなので、ちょっとでも短くするために$this->h()というビューヘルパーを追加。
- Yahoo UI LibraryのGridsを使ったレイアウトファイルを用意し、Zend_Layoutを使ってレイアウト処理を行うように設定&ファイルを用意。ZFのサンプルとかだとレイアウトファイル置き場はapplication/layouts/scriptsとかになっているけど、気に入らないんでapplication/views/layoutsにしてみた。標準的なお作法と違うので注意。
実際の動作イメージは以下な感じ。
DIV構造は以下な感じ。横幅ブラウザ依存でサイドバーが240pxのやつ。
今のところ、ヘッダ、サイドバー、フッターはそれぞれviews/scripts/partial/の中にパーツテンプレートして放り込んであるけれども、その内容にロジックが発生する場合はこういうやり方ではなく、ロジックをアクションスタックに詰んで、それぞれのレイアウト要素をプレースホルダーごとにレンダリングして……、ってやり方にする必要が出てくると思われる。が、本当にそれでいけるのか、いろいろ試してみないとわからない。
モデル周りの作り方もひとまずはドキュメント通りにやってみようと思っているんだけど、最初のうちはかなり実験的に試行錯誤してみるしかないかなー。単に動くものを作るだけだったら何とでもなるんだけど、ZFらしい標準的なやり方ってのはライブラリのソースとそういう実装に至る思想を一通りかみ砕きつつ、さらに実践で2、3回痛い目にあって学習しないと身につかなそうだ。ここ最近(1年くらい)のZF関連のドキュメントも全然見てなかったからなー。追いつくのがきつい。