べにやまぶろぐ

技術寄りの話を書くつもり

FuelPHP で (subnav をテンプレートに渡して) 今いるページへのリンクのスタイルのみ変えたい

バージョン : FuelPHP 1.7.1

FuelPHP では oil でページ作ると

   public function action_index()
   {
       $data["subnav"] = array('index'=> 'active' );
       $this->template->title = 'Test » Index';
       $this->template->content = View::forge('index', $data);
   }

みたいに Controller の方で $data["subnav"] のような変数に

array(<アクションを識別するための ID> => <選択時に使いたい css クラス名>)

を突っ込んで、View で

<li class='<?php echo Arr::get($subnav, "index" ); ?>'><?php echo Html::anchor('index','いんでっくすぺーじ');?></li >

みたいにして参照して今いるページとマッチするリンクだけ css のクラス(この場合は .active )が適用されるようなコードが作られる。

で、ヘッダーとかサイドバーがあるサイトで今いるページがわかるようにスタイルを変えたいときに使おうと思ってテンプレートの方で Arr::get($subnav, "index" ); すると $subnav なんて知らないよって怒られる。

FuelPHP Forums | public Template and passing $data

上記にあるように、

$this->template->subnav = array('index' => 'active');

のようにして渡してやってテンプレートからは参照できるようにする必要がある。