CAKEPHP入門




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

CakePHP 1.3によるWebアプリケーション開発―オープンソース徹底活用
掌田 津耶乃
秀和システム
売り上げランキング: 12574

「app」内にある「webroot」に保存した者が最初に表示されている。

「app」内の「components」にphpファイルを置く

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

class HelloController extends AppController{
   
    public $name='hello';
    public $uses = null;
    public $autoRender = false;
   
   
    function index(){
       
        echo "hello hoge hoge";
       
    }
function other(){
       
        echo "これはインデックス以外が表示されています。";
    }
}

?>
  • public $name=’hello’;はコントローラーの名前を示しています。
  • public $uses = null; はコントローラ内で使用するモデルを示しています。今回はモデルを使ってないのでnullが指定されています。
  • public $autoRender = false; はビュー関係のオブジェクトを使って自動的にページをレンダリングする機能の設定を$autoRenderで設定しています。

function index()の所でディフォルトのページの処理を行います。
function other()は ..hello/otherでアクセスできるようになっています。この「other」は一般にアクションと言われています。

ビューを作る

ページの表示はコントローラーではなく、ビューが行うものです。
ビューには「ビューテンプレート」と「レイアウト」の2つが存在します。「レイアウトを用意して、その中にビューテンプレートをはめ込んでいきます」

「app」→「views」に新しくフォルダを作り、テンプレート「index.ctp」を作成する。

1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>HELLO PAGE</title>
</head>

<body>
<h1>テストページ</h1>
<p>これはテストページです。ビューのテストです。繰り返す。</p>

</body>
</html>

「app」内の「components」にphpファイルを書き換える。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php

class HelloController extends AppController{
   
    public $name='hello';
    public $uses = null;
    public $autoLayout = false; //trueにすると用意されたlayoutを使ってページをレイアウトします。
    public $autoRender = true;
   
   
    function index(){}
   

   
}

?>

結果

「index.ctp」のなかにphpを書いても実行されます。

レイアウトの作成

public $autoLayout = true;にすると用意されたlayoutを使ってページをレイアウトします。
ディフォルトのレイアウトが表示されます。

ディフォルトレイアウトのファイルはどこにあるかというと「…./cake/libs/view/layouts/default.ctp」にあります。
これまではすべて「app」の中にあったのですが、レイアウトは「cake」の中にあります。

では作成してみましょう。

新規で作ったレイアウトは「app」=> 「view」=>「layout」に保管します。(ディフォルトとは場所が違うので注意)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>



<?php echo $html->charset(); ?>


<title>

<?php echo $title_for_layout; ?>

</title>
<?php
  echo $html->css('cake.hello');
  echo $scripts_for_layout;
 
  ?>
 

</head>

<body>

<div id="container">
<div id="header"> ** Header**</div>
<div id="content">

<?php echo $content_for_layout; ?>
</div>


<div id="footer"> **this is test** </div>

</body>
</html>

charset(); ?>はを表示しています。
はコントロールクラス内の$this->pageTitleが表示されます。
echo $html->css(‘cake.hello’);は外部からCSSを指定してます。「webroot」「css」のなかにある。








レイアウトで使用するCSSは「app」「webroot」「css」というフォルダの中に保管します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@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;
   
}

あとコントローラーも変更

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

class HelloController extends AppController{
   
    public $name='Hello';
    public $uses = null;
    public $layout = "hello";
   
   
    function index(){}
   
}

?>

public $layout = “hello”; 「layout」内のhello.ctpをレイアウトで使うとしていしています。

  1. コメントはまだありません。

  1. トラックバックはまだありません。