CakePHP のアクション内でビューのレンダーとレイアウトのオンオフが可能なんですねっ! | oki2a24 の続きです。
まとめ
- app/webroot/css/ に CSS を入れる。名前は、cake.XXX.css という感じで。
- app/View/Layouts/ に レイアウトファイルを入れる。
- レイアウトファイルで CSS を、コントローラーでレイアウトを指定する。
前提
- CakePHP 2.1.3 導入済み。
- ドキュメントルート/cake/sample/(ここにCakePHP が入ってます。app ディレクトリとか、.travis.yml ファイルとか。)
ソース
ソース一覧
- cake/sample/app/webroot/css/cake.haskap.css
- cake/sample/app/View/Layouts/haskap.ctp
- cake/sample/app/Controller/HaskapController.php
ソースの中身です。
ebroot/css/cake.haskap.css
@charset "utf-8"; body { background: #514583; color: #fff; margin: 0; } #header{ font-size: 2em; font-weight: bold; padding: 10px 20px; } #content{ background: #fff; color: #333; padding: 10px 20px 40px 20px; } #footer { padding: 6px 10px; text-align: right; }
CSS にポイントは特にありません。
cake/sample/app/View/Layouts/haskap.ctp
<!DOCTYPE HTML> <html lang="ja-JP"> <head> <?php echo $this->Html->charset(); ?> <title> <?php echo $title_for_layout; ?> </title> <?php echo $this->Html->css('cake.haskap'); echo $scripts_for_layout; ?> </head> <body> <div id="container"> <div id="header">★★ ヘッダー! ★★</div> <div id="content"> <?php echo $content_for_layout; ?> </div> <div id="footer">★★ フッター! ★★</div> </div> </body> </html>
ポイントは次の2点だと思います。
- $this->Html->css(‘cake.haskap‘) で CSS を指定する。拡張子は付けにない。cake.haskap で app/webroot/css/cake.haskap.css が指定される。
- $content_for_layout で ビューの内容を読み込む。
cake/sample/app/Controller/HaskapController.php
<?php class HaskapController extends AppController { // コントローラー名 public $name = 'Haskap'; // モデルを指定しない public $uses = null; // レイアウトとして使用するものを指定。Layouts フォルダの、haskap.ctp を使う。 public $layout = "Haskap"; public function index() { } } ?>
ポイントは次だと思います。
- public $layout でレイアウトを指定する。Haskap で app/View/Layouts/haskap.ctp が使用される設定となる。
結果
無事オリジナルの CSS と レイアウトが適用されました。
「CakePHP2 でオリジナルのレイアウトを使うための2つの作業」への1件の返信
[…] 投稿ナビゲーション ← 前へ […]