A.7. Posts Controller の作成

次に、posts 用のコントローラを作成しましょう。コントローラは、post に関するやり取りに関するすべてのロジックを扱うところです。また、このモデルに対するすべてのアクションが含まれています。この新しいコントローラは、 posts_controller.php というファイルになり、 /app/controllers ディレクトリに入れます。基本的なコントローラは次のようになります:

Example A.2. /app/controllers/posts_controller.php

<?php

class PostsController extends AppController
{
    var $name = 'Posts';
}

?>

それでは、コントローラにアクションを追加してみましょう。ユーザが www.example.com/posts をリクエストすると、これは、 www.example.com/posts/index をリクエストしたのと同じになります。この URL にアクセスした場合には、読者が投稿リストを見られるようにしたいので、 index アクションは下記のようになります:

Example A.3. /app/controllers/posts_controller.php (index アクションの追加)

<?php

class PostsController extends AppController
{
    var $name = 'Posts';

    function index()
    {
        $this->set('posts', $this->Post->findAll());
    }
}

?>

少し解説してみましょう。PostsController に index() 関数を定義すると、ユーザが www.example.com/posts/index をリクエストした時にこのロジックにアクセスできるようになります。同様に、 foobar() という関数を定義したとすると、そこには、 www.example.com/posts/foobar でアクセスできるようになります。

このアクションの中では、 set() という命令を使って、データをビュー(次に作成します。)に渡しています。この行によって、ビューの中には、'posts' という変数がセットされ、中身は、Post モデルの findAll() メソッドが返した値と同じです。Cake の命名規約に従っているため、 Post モデルは自動的に、$this->Post で利用できるようになっています。

Cake のコントローラに関する詳細は、 "コントローラ"の章を参照してください。