2010年11月15日月曜日

【CakePHPの導入とその初期設定3】lcc-hikaku.jp公開に向けて-5

今回は未だCakePHPの初期画面に出る

Your database configuration file is NOT present.
Rename config/database.php.default to config/database.php


を解決すべく設定をする・・・と思ったのだが、lcc-hikaku.jpは現在のところDB接続不要のサイトであるので、ここはこの警告を無視して、DB接続を行わないCakePHPの設定をしていく。


その前にこれから開発を行っていく上での基本設定を行います。


【デバックモードなどの基本設定】


app/config/core.php
のdebugの値を3へ
この値によって、viewで表示してくれるデバックメッセージが変わります。


0 = 運用モード
1 = エラーと警告を表示
2 = エラーと警告、SQLを表示
3 = エラーと警告、SQL、complete controller dumpを表示


また、Configure::write('Cache.disable', true);
をコメントアウトして、キャッシュを開発時にはoffにしましょう。


実際に公開する際にはここを公開用の設定として、デバックモードの値を0にしたりファイルのキャッシュをonにしたりする必要があります。

では、DBを使わない設定を行います。

【DBを使わない設定】


DB接続の設定をされる方は下記チュートリアルが参考になります。
http://book.cakephp.org/ja/view/1531/Cake-Database-Configuration


さて、DB接続をしない場合は、DBの接続をしないという設定が必要なよう。
方法としては、探した中では3通りあった。


1.コントローラーの$usesにnullを設定
2.AppModelに$useTableを設定
1,2は下記を参照
http://www.1x1.jp/blog/2007/08/cakephp_no_db.html


3.DataSourceを使用してDB設定を外すというアイデア
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2329&forum=6
これはまだちゃんと理解できていない。DataSourceってなんだ?


そもそも今回はモデルも使わないので1を選択。


【レイアウトの設定】


CakePHPはコントローラーにレイアウトを指定するだけでそのレイアウトを読み込んで表示してくれる。


レイアウトは
http://cakephp.seesaa.net/article/20616700.html
に紹介されている
http://cakephp.seesaa.net/article/20603204.html
から良さげなレイアウトを選択。(デザインをオープンにして下さってる方々に感謝です。)


上記の指示によると、


default.thtml は、 app/views/layouts に置く。
*****.css は、 app/webroot/css に置く。
css_images の中のファイルは、 app/webroot/css/images にコピー。webroot_imgの中のファイルは、 app/webroot/img にコピー。


ということなので指示に沿って配置。ちなみに、thtmlは1.1系のレイアウトファイルで、1.2,1.3からは.ctpファイルが推奨(1.3からはthtmlだと動作しない恐れも)
自分の場合はdefault.thmlをlcces.ctpにリネーム。


コントローラーで


 public $layout = "hogehogelayout";


をしてレイアウトを指定
無事レイアウトが反映された。


レイアウトに入れ込みたいviewを



<div id="content">
<?php echo $content_for_layout; ?>
</div>



で指定すればOK.自分もまだここはちゃんと理解できてないので今度layoutとview周りは勉強が必要。


【RSSの表示】


ひとまず上記でレイアウトが表示でき、かつその中にviewを入れらたので、今度はRSSで取得したニュースを表示するプログラムを書く。
参考にしたサイトは下記
http://pc.casey.jp/archives/2332
App::import('Vendor', 'simplepie/simplepie');
に気をつけて指示通りに行う・・しかし・・
何回やっても


「Fatal error: Cannot redeclare $components.....


これは
外側関数の再定義エラーで、外側の関数名が重複して定義されている際のエラーらしい。


なんでかわからないままずっと悩んでいたが、自分が


var $components = array('Security')


を指定しているのをすっかり見落としていた。これはベーシック認証のためのコンポーネントである。


どちらも有効にするためには


var $components = array('Security','Simplepie')


とすればよい。


Viewの方も同じ方の記事を参考に
http://pc.casey.jp/archives/2342
で完成。
自分の環境では、
<b>LCC</b>
という<b>タグだけそのまま表示されてしまっているのと、レイアウトにすこし崩れがある。
とりあえずはひとまず表示まで確認できた。


【最初に表示されるページの設定】


サイトが作れたのは良いが、CakePHPだと自分の環境では
lcc-hikaku.jp/cakephp1.3.5/lcces
にアクセスしないと自分が作ったサイトが表示されない。
lcc-hikakuにアクセスした際にそのまま表示されてほしいのでデフォルトページを変える必要がある。
まずcakephp1.3.5をlcc-hikaku.jpにリネームしてしまう。
そして元々のlcc-hikaku.jpファイルをなくして(元々cakephp1.3.5しか入れてなかったので)そこにりネームしたlcc-hikaku.jpを配置。


CakePHP側の設定としては、
/app/config/routes.php のRouterを変更する。


下記が参考になった。
http://seo.doy.jp/articles/cakephp/31.html/comment-page-1


初期設定
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));


設定変更後
Router::connect('/', array('controller' => 'hogehoges', 'action' => 'index'));


これでlcc-hikaku.jpにアクセスしてlccesのコントローラーやViewが参照されるようになった。


現在dev機で開発してるので、レイアウトなどが整い次第公開したいと思います。

0 件のコメント:

コメントを投稿