この本を使って勉強しています。其のメモです。
「app」内にある「webroot」に保存した者が最初に表示されている。
「app」内の「components」にphpファイルを置く [cc lang="php"] <?php
class HelloController extends AppController{
public $name='hello';
public $uses = null;
public $autoRender = false;
function index(){
echo "hello hoge hoge";
}
function other(){
echo "これはインデックス以外が表示されています。";
}
}
?> [/cc]
- public $name='hello';はコントローラーの名前を示しています。
- public $uses = null; はコントローラ内で使用するモデルを示しています。今回はモデルを使ってないのでnullが指定されています。
- public $autoRender = false; はビュー関係のオブジェクトを使って自動的にページをレンダリングする機能の設定を$autoRenderで設定しています。
function index()の所でディフォルトのページの処理を行います。 function other()は ..hello/otherでアクセスできるようになっています。この「other」は一般にアクションと言われています。
ビューを作る
ページの表示はコントローラーではなく、ビューが行うものです。 ビューには「ビューテンプレート」と「レイアウト」の2つが存在します。「レイアウトを用意して、その中にビューテンプレートをはめ込んでいきます」
「app」→「views」に新しくフォルダを作り、テンプレート「index.ctp」を作成する。 [cc lang="html"] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
テストページ
これはテストページです。ビューのテストです。繰り返す。
[/cc]
「app」内の「components」にphpファイルを書き換える。 [cc lang="php"] <?php
class HelloController extends AppController{
public $name='hello';
public $uses = null;
public $autoLayout = false; //trueにすると用意されたlayoutを使ってページをレイアウトします。
public $autoRender = true;
function index(){}
}
?> [/cc]
「index.ctp」のなかにphpを書いても実行されます。
レイアウトの作成
public $autoLayout = true;にすると用意されたlayoutを使ってページをレイアウトします。 ディフォルトのレイアウトが表示されます。
ディフォルトレイアウトのファイルはどこにあるかというと「..../cake/libs/view/layouts/default.ctp」にあります。 これまではすべて「app」の中にあったのですが、レイアウトは「cake」の中にあります。
では作成してみましょう。
新規で作ったレイアウトは「app」=> 「view」=>「layout」に保管します。(ディフォルトとは場所が違うので注意)
[cc lang="php"] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<?php echo $html->charset(); ?>
<?php echo $title_for_layout; ?>
?>
<?php echo $content_for_layout; ?>
[/cc]
<?php echo $html->charset(); ?>はを表示しています。 <?php echo $title_for_layout; ?>はコントロールクラス内の$this->pageTitleが表示されます。 echo $html->css('cake.hello');は外部からCSSを指定してます。「webroot」「css」のなかにある。
レイアウトで使用するCSSは「app」「webroot」「css」というフォルダの中に保管します。
[cc lang="css"] @charset "UTF-8"; / CSS Document /
body{
background:#00ffff;
color:#660000;
margin:0;
}
header{
font-size:14px;
font-weight:bold;
}
content{
background:#9F9;
color:#990000;
padding:10px 10px 40px 20px;
}
footer{
text-align:right;
}
[/cc]
あとコントローラーも変更 [cc lang="php"] <?php
class HelloController extends AppController{
public $name='Hello';
public $uses = null;
public $layout = "hello";
function index(){}
}
?> [/cc]
public $layout = "hello"; 「layout」内のhello.ctpをレイアウトで使うとしていしています。