CAKEPHP入門

この本を使って勉強しています。其のメモです。


「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"> HELLO PAGE

テストページ

これはテストページです。ビューのテストです。繰り返す。

[/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(); ?>

</p> <p><?<a class="keyword" href="http://d.hatena.ne.jp/keyword/php">php</a> echo $title_for_layout; ?></p> <p> <?php echo $html->css('cake.hello'); echo $scripts_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をレイアウトで使うとしていしています。