技評ウェブサイトの「CakePHPで高速Webアプリ開発」サンプルプログラムでエラー発生中..


第6回 CakePHPで作るToDoアプリをやってます。

Viewに入力フォームを追加

<p><?php echo $html->input('Task/content', array('size' => '40')) ?>

Controllerにaddアクションを追加

function add() {
if (!empty($this->data)) {
if ($this->Task->save($this->data, true, array('content', 'created', 'modified'))) {
$this->flash('タスクが追加されました', '/tasks');
return;
}
}
$this->redirect('/tasks');
}

あとはモデルへの値が渡されてきているかチェック、モデルへのデータの追加とフィールドのホワイトリスト、簡易な完了メッセージ表示、$this->dataに値がないか,saveに失敗したときはリダイレクトなどを追加して、テスト書き込みやってみる。

f:id:sbtn:20100529160537g:image

おや、なんか文字化けしてエラーになってる。

phpMyAdminで確認すると、ちゃんとaddされてるんだけどねー。

ちょっと気持ち悪い。原因を調べよう。。。

追記

原因はよくわからいけど、DBのaddは成功してるんだし、気にしないで先に進むことにした。

Controllerを下記のように書き換えて、add後は/tasksにリダイレクトさせることに。

function add() {
if (!empty($this->data)) {
if ($this->Task->save($this->data, true, array('content', 'created', 'modified'))) {
//$this->flash('タスクが追加されました', '/tasks'); //←コメントアウト
//return;
$this->redirect('/tasks'); //←追加
}
}

技評ウェブサイトの「CakePHPで高速Webアプリ開発」をやってみるか


ウェブ開発にいつまでもレガシーASPもなんだなー、と思いつつ時間ばかりが過ぎ、その間にもレガシーASPのコードは量産され、だからといってASP.NETも気が進まない。

そういえばPHPってどうなんだろう?と思って久しぶりに調べてみたら、どうも「フレームワーク」と呼ばれるソリューションが存在し、これを利用することで素のPHPでゴリゴリ書かなくても良いとのこと。ほほう。CakePHPを使いたくなる5つの特徴を読む。習得までの時間が短い、と書いてある。本当か??

で、PHPフレームワークの一つ、「CakePHP」というのを習得することに決定。

目標はCakePHPでウェブサービスを最低でも一つ開発すること。(儲かったら百式さんみたく$100寄付もしたいなあ)

どんなサーバーで動かすべきかすごく悩んだけど、まずは動くCakeに触れることが先決、開発環境から着手。カフェでも開発できるようにノートPCにインストールしたい。ただし会社の備品なのでOSは汚したくない。→USBメモリにPHP環境構築 XAMPP Lite。自分はレッツノートのSDカードだけど。いやー楽だなー。なんも考えなくてもApache+PHP+MySQLがすぐ動く。いい時代だ。

まずは本家のブログチュートリアルをやってみる。

お、コピペだけど、本当にブログが作れた!すごい!

MVCモデルが、なんとなく分かった。ActiveRecordつーのは即ち、SQLを書かなくてもDB操作ができるということでいいのんか?ユーザーが実際に見るのはビューなんだな。

次は、Akiyan氏のtodoチュートリアルに挑戦。

第1回~第4回は軽く読み飛ばす。

第5回 CakePHPで作るToDoアプリ(1)をやってみる。

DBはSQL文のコピペで作成。enum(‘yet’,’done’)という型は初めて見た。

コントローラーの説明がわかりにくい。コントローラのアクションは,コントローラクラスのメソッドとして登録します。という説明文が突然出てくるんだけど、初心者に何の事前解説もなく言われても、さっぱりです。。

Akiyan氏のサンプルコードがCakePHP1.1で書かれているため、自分の環境(1.2)とちょっと違う。コメント欄に答えが書き込んであって助かった。集合知!!

アクションの定義もわかりにくい。このように分解して俯瞰すると理解しやすいね。

f:id:sbtn:20100516150247p:image

なんだかんだで、ビューの表示までたどり着く。

なんかつかれた。

CakePHPは一般的なフレームワークに比べて覚えることが少ないので,何がわからないかがわからない状態から抜け出せるまでの期間は比較的短いと思います。って信じていいの?信じるよ!?

お問い合わせ

桶シスへのお問い合わせはこちら。

Close