cakephpで現在のコントローラー名を取得してctpファイルのbodyタグのIDに表示する
イテル on 12 5, 2009

コントローラー名を取得するコードをメモします。
グローバルナビゲーションなどを現在のページに該当する部分を、
装飾したい場合などに使えるかと思います。
$this->name
ユーザー管理ページでグローバルナビゲーションの「ユーザー管理」ボタンの
画像をcssなどで装飾している場合の一例をご紹介します。
一例
userコントローラー(/apps/controller/users_controller.php)
class UsersController extends AppController {
var $name = 'Users';
function beforeFilter(){
//htmlのbodyのIDをコントローラ名で指定する
$this->set('body_id', $this->name);
}
}
コントローラーのbeforeFilterでコントローラー名をbody_idという変数にセットします。
beforeFilterでなくてもいいのかもしれません。
※というかcakeの使い方を完全に理解しているわけではないので、
間違ってるかもしれませんので、ご指摘くださると幸いです。
共通のメインテンプレート(/app/view/layout/base.ctp)
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title><?php echo $title_for_layout?></title> </head> <body id="<?php echo $body_id; ?>">
bodyタグのidとして「$body_id」を指定しております。
この場合は「id=”Users”」と表示されます。
グローバルナビのcss(一部分)
#global_navigation ul{
width:840px;
margin:0;
padding:0;
list-style:none;
}
#global_navigation ul li{
float:left;
width:210px;
height:90px;
}
#global_navigation ul li a{
display:block;
float:left;
width:210px;
height:90px;
background-position:left top;
background-repeat:no-repeat;
text-indent:-9999px;
}
#global_navigation ul li#gnavi01 a{
background-image:url(../images/gnavi01.png);
}
#Users #global_navigation ul li#gnavi01 a{
background-position:left -180px;
}
#global_navigation ul li a:hover,
#Users #global_navigation ul li#gnavi01 a:hover{
background-position:left -90px;
}
cssについては書き方はいろいろですのが、あくまで
私の書き方の一例を掲載しております。
「li#gnavi01 a」の背景として210px×270pxの、通常時、ホバー時、ページイン時の
画像を読み込ませて、heght90pxを指定して通常時の状態だけ表示します(下図のような感じ)。

ホバーした時に「background-position:left -90px;」を指定して90pxずらします。
ページイン時に「background-position:left -180px;」を指定して180pxずらします。
画像を1つにする理由はホバー時に一瞬ボタンが白くなるのを防ぐためです。
後半cssの説明になりましたが、要点は「$this->name」だけでしたw
関連する投稿
Popular Posts
Recent Posts
Recent Comments
- cakePHPでデータベースのテーブルにフィールドを追加したときに発生した問題2 | ダリの雑記:WEBプログラム版: ... http://oneday.te
- ボタンを作りまくる « sakaiden: ... ●ボタンを
- tm3242: 詳細ありがと
- イテル: おはようござ
- さいとう: アドバイスど

