FuelPHP の Theme クラスの chrome の使い方
Theme クラスの chrome の使い方です。
設定ファイル app/config/theme.php
<?php return array( /** * The active theme to use. This can also be set in code using Theme::active('foo'); */ 'active' => 'default', /** * The fallback theme to use. If a view is not found in the active theme, this theme * is used as a fallback. This can also be set in code using Theme::fallback('foo'); */ 'fallback' => 'default', /** * The theme search paths. They are searched in the order given. You can add paths * on the fly via Theme::add_path($path) or Theme::add_paths(array($path1, $path2)); */ 'paths' => array( APPPATH.'views/themes', ), /** * The folder inside the theme to be used to store assets. This is relative to the * theme's path. */ 'assets_folder' => 'assets', /** * The extension for theme view files. */ 'view_ext' => '.php', /** * Whether to require a theme info file */ 'require_info_file' => false, /** * The theme info file name */ 'info_file_name' => 'themeinfo.php', );
コントローラ app/classes/controller/theme.php
<?php class Controller_Theme extends Controller { public function before() { $this->theme = Theme::instance(); $this->theme->set_template('template')->set('title', 'Themeクラスのサンプル'); } public function action_index() { $this->theme->set_chrome('header', 'chrome/blue', 'content'); $this->theme->set_partial('header', 'header')->set('var', '変数'); $this->theme->set_chrome('footer', 'chrome/red', 'content'); $this->theme->set_partial('footer', 'footer')->set(array( 'var1' => '変数1', 'var2' => '変数2', )); } public function after($response) { if (empty($response) or ! $response instanceof Response) { $response = Response::forge($this->theme->render()); } return parent::after($response); } }
ビューのテンプレート views/themes/default/template.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title><?php echo $title; ?></title> </head> <body> <div id="header"> <?php echo $partials['header']; ?> </div> <div id="content"> コンテンツ </div> <div id="footer"> <?php echo $partials['footer']; ?> </div> </body> </html>
ビューのヘッダ views/themes/default/header.php
ヘッダ<br /> <?php echo $var; ?><br />
ビューのフッタ views/themes/default/footer.php
フッタ<br /> <?php echo $var1; ?><br /> <?php echo $var2; ?><br />
クローム blue views/themes/default/chrome/blue.php
<!-- begin chrome/blue --> <div style="border: 5px #0000c0 solid;"> <?php echo $content; ?> </div> <!-- end chrome/blue -->
クローム red views/themes/default/chrome/red.php
<!-- begin chrome/red --> <div style="border: 5px #c00000 solid;"> <?php echo $content; ?> </div> <!-- end chrome/red -->
で、上記のコードでコントローラを実行すると以下のようになります。
で、HTML はこんな感じ。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Themeクラスのサンプル</title> </head> <body> <div id="header"> <!-- begin chrome/blue --> <div style="border: 5px #0000c0 solid;"> ヘッダ<br /> 変数<br /> </div> <!-- end chrome/blue --> </div> <div id="content"> コンテンツ </div> <div id="footer"> <!-- begin chrome/red --> <div style="border: 5px #c00000 solid;"> フッタ<br /> 変数1<br /> 変数2<br /> </div> <!-- end chrome/red --> </div> </body> </html>
あ、ちなみに 1.3/develop の最新でないと動きません。