CakePHPの場合




トップページ| サイトマップ|

CakePHP

CakePHP日本語サイト

上記のサイトから、安定版をダウンロード(現時点では、1.3.7)

まず、開発環境を作ってみます。(xamppを使用している場合)


インストール


ダウンロードしたファイルを解凍して、適当に改名し(例えば、cake)ドキュメントルートにコピーします。

試しに、http://localhost/cake を開いてみます。以下のような画面が出ます。





赤枠で示されているところを解消するために、3箇所の修正を行います。

以下、CakePHPのフォルダーはcakeという名前でコピーされているものとします。

1:core.phpの修正

    cake/app/config/core.phpをエディターで開きます。

    次の2箇所を修正します。

    Configure::write('Security.salt', 'DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi');
    Configure::write('Security.cipherSeed', '76859309657453542496749683645');

    DYhG93b....の部分を他の適当な英数字で置き換え。
    7685930....の部分を他の適当な数字で置き換え。

2:データベースの設定

    cake/app/config/database.php.defaultのファイル名から、.defaultを取ります。

    次に、データベースを2個作っておきます。(例;cake、cake_test)

    cake/app/config/database.phpを開いて、書き換えます。

3:Apacheのhttpd.confの書き換え

    httpd.confを開いて、2箇所修正。

    ●mod_rewrite.soのコメント外しておきます。

    ●.htaccessを使えるようにするために、ドキュメントルートのAllowOverrideをNoneならAllに
      変更します

追記:パーミッションの設定

    cake/app/tmp以下のモードを「707」に設定しておいてください。

    ここはキャッシュ等の一時ファイルの作成に使われます。

追記:.htaccessの設定

    1.cake直下の.htaccessを編集

       RewriteEngine on の下に、RewriteBase /cake を挿入

    2.cake/app直下の.htaccessを編集

       RewriteEngine on の下に、RewriteBase /cake/app を挿入

    3.cake/app/webroot直下の.htaccessを編集

       RewriteEngine on の下に、RewriteBase /cake/app/webroot を挿入

修正後は、こんな感じになってインストール終了。





簡単なものを作って動作確認

CakePHPは、他の多くのフレームワークが採用している「(model)(view)(controller)」という設計手法を使っています。

中でも、最も重要なのが「controller」です。他の2つが無くても何とかなりますが、「controller」が無くては何も始まりません。

コントローラーのみを使った場合の例

ファイルの名前の書式は、「***_controller.php」。すべて小文字。***の部分を「checktest」としてみます。

cake/app/controllers/checktest_controller.php

<?php
    class ChecktestController extends AppController {
        	
        public $name = "Checktest";
        public $uses = null;
        public $autoRender = false;
        
        function index() {
            echo "<html><head></head><body>";
            echo "<h1>テストです</h1>";
            echo "<p>こんな感じ</p>";
            echo "</body></html>";
            
        }
    }
    
?>


コントローラーのみでアクセスする場合は、http://wisteriahill.sakura.ne.jp/cake/checktest

こんな感じ

注意
例を作る場合、単純な「test」という名前は避けましょう。「test」は、TestSuiteで事前に使われているようで、インストールを要求されてしまいます。
この例で、文字化けがある場合は、エンコードをUTF-8にしてください。

コントローラーとビューを使った場合の例(1)

ビューを使用する場合、テンプレートを用意します。テンプレートは、cake/app/viewsの中に用意します。

ここでは、checktest2という名前にします。

checktest2という名前のフォルダーを作り、この中に、index.ctpというテンプレートファイルを作成。

フォルダー名は、controller名に対応し、テンプレート名は、controllerに記述されたアクション名に対応しています。

controllerは以下のような記述になります。

cake/app/controllers/checktest2_controller.php

<?php
    class Checktest2Controller extends AppController {
        
        public $name = "Checktest2";
        public $uses = null;
        public $autoRender = true;
        
        function index() {
            $this->set("title_text","テストです2");
            $this->set("content","こんな感じ2");
        }
    }
?>


注意
$autoRenderはtrueに設定します。

index.ctpは以下のような記述になります。記述されているのは、<body>の部分です。

cake/app/views/checktest2/index.ctp

<h1><?php echo $title_text; ?></h1>
<br />
<p><?php echo $content; ?></p>


こんな感じ

ちなみに表示されているヘッダーやフッターはCakePHPが自前で割り振ったものです。

全体の動きはこんな感じ

コントローラーとビューを使った場合の例(2)

フォームの送信

2つのフォーム間で、POST通信をやってみます。コントローラの中で、アクション(メソッド)を定義している例がありますが、なぜかうまく動かず(Missing Controller)。
なので、分けてやってみます。

2つのコントローラを準備。

cake/app/controllers/formtest_controller.php

<?php
    class FormtestController extends AppController {
        
        public $name = "Formtest";
        public $uses = null;
        public $autoRender = true;
        function index(){}
    }
?>


cake/app/controllers/formresult_controller.php

<?php
class FormresultController extends AppController {
        
        public $name = 'Formresult';
        public $uses = null;
        public $autoRender = true;
        
        function index(){
            App::import("sanitize");
            $input = $this->params['form']['input'];
            $result = Sanitize::stripAll($input);
            $this->set("result",$result);
        }
}
?>


Viewを準備。

formtestフォルダーを作って、index.ctpを作成。

<h1>フォームの入力</h1>
<br />
<p>何か書いてください。</p>
<form method="post" action="./formresult">
<input type="text" name="input" />
<input type="submit" value="送信" />
</form>


formresultフォルダーを作って、index.ctpを作成。

<h1>結果の表示</h1>
<br />
<p>
<b><?php echo $result; ?></b>
が入力されました。</p>
<br />
<a href="./formtest">戻る</a>


こんな感じ

to be continued .

TOP



スポンサー リンク
カスタム検索
スポンサー リンク
スポンサー リンク