本に沿って勉強しています。まだまだかなり前半の段階ですがどうにもはまってしまった。レイアウトについて試して、続いてテーマについてやっていたところです。テーマ用のディレクトリを作成したのだけど、どうにもその部分が適用されていない感じ。ちなみに勉強に使っている本はこれです。
オープンソース徹底活用CakePHP2.1によるWebアプリケーション開発
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2012/06/29
- メディア: 単行本
- 購入: 1人 クリック: 6回
- この商品を含むブログ (3件) を見る
バージョンはCakePHP2.2.2、PHP5.3.16です。サーバはCentOS6.3。今回、テーマのためにViewの下にディレクトリを作成。その下にthemed、さらにその下にhelloTheme、さらにその下にwebroot、さらにその下にcssと作成します。そして、最後cake.generic.cssというスタイルシートのファイルを作成します。View/themed/helloTheme/webroot/css/cake.generic.cssという形になります。cake.generic.cssにはbodyや#contentなどを書き込んでおきます。コントローラーはHelloControllerに$this->theme = "helloTheme";を入れれば適用されるはずだったのですが、変化がない。
変化がないというのは、エラーも出ないし表示も変わらないということです。View/webroot/css/cake.generic.cssのスタイルシートが読み込まれているようです。試しにこちらのcake.generic.cssを変更してみると、表示が変更されたのでこちらが適用されていると思います。
CakePHPは命名規則を大事にしているようで、ネットでも調べるとView/Themed/とテーマ用ディレクトリの頭文字が大文字になっているのもあったので変更してみたり、コントローラ側の$this->theme = "helloTheme"の値をHellothemeに変更してみたりとやってみたが変わりない。本でも誤植があったので、"を'に変えてみたりもしたが変わりなく、でもエラーもでないのもどうかと思うのだけど。$this->view = 'Theme';な記述も見てコントローラに追加したらさすがにエラーがでました。テーマを使うために設定らしいのですが、これはCakePHP1.3の時に必要なもので、CakePHP2では廃止されたとか。
という感じで調べながら何度もやったのですが、うまくいかない。本がCakePHP2.1のものを見ながらCakePHP2.2で試しているからか。テーマは割りと大きな機能なので変更なくうまくいくと思うのだけどなぁ。
というわけでブログに書いてみた。もっとPHPを覚えれば解決できるかもしれないし、今はこれ以上やれることがないので先に進むことにした。システムが作れるようになることが目標だし、テーマがうまくいかなくても最悪レイアウトとかで全部スタイルシートを修正するなどの対応でなんとかできるかもしれない。状況説明がわかりにくいし、ファイルの内容を書いていないのでわからないかもしれないが、誰か思い当たる人がいれば教えてください。
追記:自己解決できました。詳しくはこちら