ホームページ >バックエンド開発 >PHPチュートリアル >Kohana にサードパーティのテンプレート エンジンを使用させる

Kohana にサードパーティのテンプレート エンジンを使用させる

WBOY
WBOYオリジナル
2016-07-25 09:10:411039ブラウズ
Kohana のビュー レイヤーは非常にシンプルで、変数データが​​ $_data 配列に配置されます。したがって、Kohana_View クラスを継承し、一部のメソッドをオーバーライドすることで、サードパーティのテンプレート エンジンをビュー レイヤーとして簡単に使用できます。
ここではBlitz Templateを使用した例を示していますが、Smartyなどを使用したい場合も同様に変更できます。
ファイルは application/classes/stucampus/system/view.php にあり、変更できますが、変更は名前空間に対応している必要があります。名前空間をサポートする方法については、を参照してください。 ここ
  1. namespace StuCampusSystem;
  2. class View extends Kohana_View
  3. {
  4. /**
  5. * テンプレート エンジン
  6. *
  7. * @var Blitz
  8. */
  9. protected static $templateEngine = null;
  10. /**
  11. * 新しい View オブジェクトを返します。 "file" パラメータを定義しない場合は、
  12. * [View::set_filename] を呼び出す必要があります。
  13. *
  14. * $view = View::factory($file);
  15. *
  16. * @param string view filename
  17. * @param array 値の配列
  18. * @return View
  19. */
  20. public static function Factory($file = NULL, array $data = NULL)
  21. {
  22. return new self($file, $data);
  23. }
  24. /**
  25. * ビューが含まれるときに生成される出力をキャプチャします。
  26. * ビューのデータはローカル変数を作成するために抽出されます。このメソッド
  27. * はオブジェクト スコープの解決を防ぐために静的です。
  28. *
  29. * $output = View::capture($file, $data);
  30. *
  31. * @param string filename
  32. * @param array variables
  33. * @return string
  34. */
  35. protected static function capture($kohana_view_filename, array $ kohana_view_data)
  36. {
  37. // 親をオーバーライドします
  38. $params = array_merge($kohana_view_data, self::$_global_data);
  39. $output = self::$templateEngine->parse($params);
  40. return $output;
  41. }
  42. /**
  43. * ビューのファイル名を設定します
  44. *
  45. * @example $view->set_filename($file);
  46. *
  47. * @param string view filename
  48. * @return View
  49. * @throws Kohana_View_Exception
  50. */
  51. public function set_filename($file)
  52. {
  53. $return =parent::set_filename($file);
  54. // ビューエンジンを初期化します
  55. self::$templateEngine = new Blitz ($this->_file);
  56. return $return;
  57. }
  58. /**
  59. * テンプレートを解析します
  60. *
  61. * @see Kohana_View::render()
  62. */
  63. public function render($file = NULL)
  64. {
  65. // このメソッドは親と同じです、ただし、親は静的遅延バインディングを使用していないため、一度書き直す必要があります = =#
  66. if ($file !== NULL)
  67. {
  68. $this->set_filename($file);
  69. }
  70. if ( empty($this ->_file))
  71. {
  72. throw new Kohana_View_Exception('レンダリング前にビュー内で使用するファイルを設定する必要があります');
  73. }
  74. // ローカル データとグローバル データを結合して出力をキャプチャします
  75. return View::capture ($this->_file, $this->_data);
  76. }
  77. }
コードをコピー


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。