Kohana 3.1のユニバーサルテンプレート

こんにちは、Habrの親愛なる居住者。



かなり長い間、私はさまざまなエンジン、フレームワーク、およびPHP プログレスエンジンのその他のジェネリックバージョンを使用していました。その結果、若くて変化への憧れの脳がそれ自体を組み立てました。通常は、すべてを行う必要があるという非常に野心的な印象です。 それだけです



DrupalやJoomlaなどの怪物を掘り下げて、はい、開発されたAPIの豊富さと多数のモジュールの存在により、ほとんどすべての複雑なサイトを作成する際にそのようなエンジンが不可欠であることがわかりました(本質的に、後者はHMVCの概念に従います)、地上から地上へのロケットでナットを割るのは必ずしも便利ではなく、コードを処理するだけでなく、サイト自体の作業も「解決する」と簡単に理解できるようになりました。



現時点では、MVC(正確にはHMVC)Kohanaフレームワーク、特にバージョン3.0および3.1のブランチに取り組んでおり、適切なサイト標準化のための最も完全でエレガントなソリューションを見つけようとしていて、グーグルのスキルは道徳的に時代遅れであるか、実際に結果は失敗しましたが、私のタスクの明確な客観的なリーダーはいません。



私の考えやアイデアをいくつか集めたので、それらを便利で直感的なテンプレートシステムにまとめることにしました。



すぐに、すべてのコードを提供するわけではないことをお伝えします。これは、かなりの数行を占めるため、コントローラーの説明だけでなく、いくつかの表現も含まれているため、テンプレートエンジンの一般的な原則を小さな例で説明します。



template.phpコントローラーは、 APPPATH.classes / controller /に配置する必要があるテンプレートの基礎です



制御コントローラ自体は次のように説明されています。

abstract class Controller_Template extends Controller







したがって、コントローラーがテンプレート機能を使用できるようにするには、マネージャーから継承する必要があります。次に例を示します。

class Controller_Welcome extends Controller_Template







テンプレートエンジンの一般的な機能







関数の数は特に印象的ではないように見えますが、phptemplateまたは他のより大きくて包括的なレベルでこの機能から作成するという目標を(少なくとも初めて)設定しませんでした。 上記の機能は、サイト標準化の中央システムを決定するのに十分であり、もう苦しむことはありません。これは私の前に立っていた主なタスクです。



さらに、コントローラーで発生する不正行為について簡単に説明します。



コントローラー操作



誓うのではなく、テンプレートを有効にするコントローラーのために、テンプレートエンジンを初期化するために、そのbefore関数での行:: before()を指定する必要があります。



テンプレートエンジンの開始中、およびそれに応じてそのbefore関数の自動実行中に、次のアクションが発生します。

-テンプレート設定の読み込み

- ページ引数が渡された場合、ページャーを確認してインストールします

-「空の」ビューの作成とテンプレート変数のゼロ化



これらの手順が完了すると、テンプレートはすでに使用できる状態になっており、パラメーターを設定しなくてもテンプレートを起動できます。 起動自体は、 render()などの関数を呼び出さずに自動的に実行されるため、コンテンツの生成プロセスを監視する必要がありません。



しかし、反対に、私たちの目標は、テンプレートを簡単に管理できるようにすることでしたか?



ページを変更するには、コントローラー機能のどこでも次の構成を使用できます。



機能リスト






軽微な発言


上記の関数は任意の順序で機能し、ユーザーのアクション後にコンパイルおよびレンダリングされる情報のストレージデバイスとして機能するため、テンプレート生成の正しいシーケンスに従う必要はありません。



パンくずリスト、ページャー、コンテンツブロック、およびリージョンを生成するための関数。それぞれ、 パンくずリストページャーブロックのパス上のテンプレートビューフォルダーに保存されているビューを使用します



このアクションまたはそのアクションが呼び出されるリクエストのタイプに応じて、テンプレートエンジンは異なるコンテンツを返します。 HMVCリクエストの場合、これはページのコンパイルおよびレンダリングされたコンテンツ変数のみです。AJAXリクエストの場合、同じ変数ですが、 json_encodeでラップされ、通常のリクエストはページ全体を完全にレンダリングします。



合計





要約すると、テンプレートエンジンはKohanaの最高のテーマエンジンであると主張するのではなく、ページビューをより簡単に制御するための便利なアイデアの集まりにすぎません。 成長する余地があることに注意してください。たとえば、htmlまたはxhtmlでレンダリングする機能を追加し、cssスタイルとjsスクリプトを対応するスタイルとスクリプトタグにアンロードするメカニズムをねじ込んで、結果としてAJAXケースへのリンクではなくテキストとして表示しますまたはHMVCのリクエスト、および他の多くのおいしいお菓子ですが、これは必要に応じて行われます。



すぐにこのスレッドがgitにアップロードされるので、機能が拡張されたときに誰もが簡単にファイルをダウンロードおよび更新できますが、今のところ、 ファイルへのリンクをおaびします 。 変更および修正は大歓迎です。



このテンプレートエンジンが誰かを助け、不必要な問題を排除することを願っています。



ご清聴ありがとうございました。建設的な批判や提案を聞いてうれしいです!



All Articles