cake phpを勉強 Cake ブログチュートリアルを実践3

前回、とりあえずデータを表示するとこまで、完成。
次は、データを追加するところを作ってみます。
仕事終わってから勉強するので、なかなか進みません。

/app/controllers/posts_controller.phpに
add()メソッドを追加。
<?php
class PostsController extends AppController
{
    var $name = 'Posts';

    function index()
    {
        $this->set('posts', $this->Post->findAll());
    }
    function view($id = null)
    {
        $this->Post->id = $id;
        $this->set('post', $this->Post->read());
    }
    function add()
    {
        if (!empty($this->data))
        {
            if ($this->Post->save($this->data))
            {
                $this->flash('Your post has been saved.','/posts');
            }
        }
    }
}
?>
if (!empty($this->data))
フォームの中身が空でなかったら、
$this->dataの中身は連想配列。
$this->dataの中身をsave()メソッドで保存。
save()メソッドは

save(保存するデータ(連想配列),バリデーションon/off(true,false),使用するフィールド名);

で使用する。使用するフィールドは、array(title,body,・・・)みたいな感じで。

バリデーションとは、データ入力時にデータをチェックする機能のこと。
バリデーションエラーが起った場合はなにも保存されません。


次に、viewの作成。Postを投稿するフォームの作成です。
/app/views/posts/add.thtml

$html->url('/posts/add')で一発でURLを吐き出してくれる。
これでURLの間違いはない。
このヘルパーという機能がとても便利そうです。
ちなみにヘルパーとは
「よく用いられる HTML コード部分を挿入できるよう助けること、
そして、WEB フォームをすばやく簡単に作成できるよう助ける(HTMLヘルパー)」 ということだそうです。
後で詳しく復習しようと思います。

次に入力フォームの作成。
input(モデル名/フィールド名 , 属性);
textarea(モデル名/フィールド名 , 属性);
でinputタグとtextareaタグを吐き出すことができます。
かなり簡単にフォームが作れそうです。
array( 'value' => '初期値(任意の文字列)')で
デフォルト値も設定できます。
tagErrorMsg()メソッドで、バリデーションでエラーが起ったときに表示するエラーテキストを設定します。


最後に、モデルの中に、バリデーションを設定します。
/app/models/post.php
<?php
class Post extends AppModel
{
    var $name = 'Post';
    var $validate = array(
        'title' => VALID_NOT_EMPTY,
        'body' => VALID_NOT_EMPTY
    );
}
?>
titleとbodyは必須だよと設定。
これで追加の機能は完了。 /cake/add/にアクセスすると無事、フォームが出来てました。
こいつは簡単です。
でももう少し深く理解しないと、いろんなものをつくれそうにもない。

tag:

date:2008年05月23日 01:16 | COMMENT (0) | TRACKBACK (0)

Trackback

Trackback UR: http://www.phas.jp/mt/mt-tb.cgi/209

Comment

(いままで、ここでコメントしたことがないときは、
コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。
承認されるまではコメントは表示されません。そのときはしばらく待ってください。)