ホーム > ブログ > プログラミングTips > FuelPHPでテンプレートを作ったよ

FuelPHPでテンプレートを作ったよ

2016.07.19

こんちゃ、銀ねこです。

最近怒涛のブログ更新ラッシュです。
そして、去年の海の日三連休もFuelPHPを触っていたことがわかりなんかおもろかったです。

とりあえず、FuelPHPでテンプレートを作ったのでまとめます。

FuelPHPてなんぞ?

php5.3で書かれた軽量のHMVC(階層化されたMVC)なphpテンプレートエンジン。調べてみると2010年に開発が始まってるので結構新しい。MITライセンスなので誰でも自由に使えます。

https://ja.wikipedia.org/wiki/FuelPHP

これを使えばログイン画面やコンタクトフォームも簡単に作れるらしい。

今回はこれを使って共通のheader、footerを読み込み、コンテンツはページごとに違うというのをやってみます。

ベースになるテンプレートのview部分を作る

まずはベースの部分のview部分を作成します。

fuel/apps/views/template.php

  1. <?php echo Html::doctype('html5') ?>
  2. <html lang="ja">
  3. <head>
  4. <meta charset="utf-8">
  5. <title><?php echo $title ?></title>
  6. <?php echo Asset::css('style.css'); ?>
  7. </head>
  8. <body>
  9. <div class="modal">
  10. <!--[header]-->
  11. <?php echo $header ?>
  12. <!--[/header]-->
  13. <!--[wrapper]-->
  14. <?php echo $content ?>
  15. <!--[/wrapper]-->
  16. <!--[footer]-->
  17. <?php echo $footer ?>
  18. <!--[/footer]-->
  19. </div>
  20. </body>
  21. </html>

ヘッダーとフッターも作成

fuel/apps/views/elements/header.php

fuel/apps/views/elements/footer.php

  1. <header>
  2. <h1 class="modal-container">
  3. <?echo Asset::img('footer_logo.png', array('id' => 'logo','alt' => "銀ねこアトリエ"));?>
  4. 銀ねこアトリエ
  5. </h1>
  6. </header>
  1. <header>
  2. <h1 class="modal-container">
  3. <?echo Asset::img('footer_logo.png', array('id' => 'logo','alt' => "銀ねこアトリエ"));?>
  4. 銀ねこアトリエ
  5. </h1>
  6. </header>

テンプレート用コントローラーを作成

apps/classes/controller/base.php

classの Controller_Baseはこのコントローラーがbaseだよという意味で、extends Controller_Templateとあるのは、もともと用意されているテンプレート用のコントローラー、templateを継承するよという意味になります。

  1. <?php
  2.  
  3. class Controller_Base extends Controller_Template
  4. {
  5. //viewテンプレート名
  6. public $template = 'template';
  7.  
  8. //データ初期化
  9. public $data = array();
  10.  
  11. public function before()
  12. {
  13. parent::before();
  14. }
  15.  
  16. public function after($response)
  17. {
  18. $this->template->header = View::forge('elements/header',null, false); // ヘッダー
  19. $this->template->footer = View::forge('elements/footer',null, false); // フッター
  20. $this->template->title = "銀ねこアトリエ"; //metaタイトル
  21. $response = parent::after($response);
  22. return $response;
  23. }
  24. }

トップページのview作成

fuel/apps/views/index.php

  1. <section>
  2. 何かしらコンテンツ
  3. </section>

コントローラーを追加

apps/classes/controller/index.php

ここではbase.phpのコントローラを継承しています。

  1. <?php
  2. class Controller_Index extends Controller_Base
  3. {
  4. $this->template->content = View::forge('index',$this->data,false);
  5. }

おまけ・画像とcssの格納する場所

FuelPHPでは画像やjs・cssの置き場所がプログラムと別になってます。

普通にDLして展開したらprojectの直下にassetsディレクトリがあり、それぞれのフォルダが用意されてるので必要なものはそこに突っ込みます。

  1. <?echo Asset::img('footer_logo.png', array('id' => 'logo','alt' => "銀ねこアトリエ"));?>

上記にあるようにaltやidなどの属性は配列で突っ込むことができます。

しかも自動でクエリがつきます。
(更新したはずでも表示されなかったり涙ここら辺の解決法は以後まとめます)

この記事のタグ