cakephpでブックマークアプリを作る(3) ITかあさん

ITかあさん

cakephpでブックマークアプリを作る(3)

前回の記事でCakephpのWHEREである、conditionsの使い方が分かりました。さて、これを利用しつつ、カテゴリごとにページを別けたいと思います。

今回の記事でCakephpでのパラメータが分かります。

よくhttp://example.jp/?action=1というよに、?で値を渡します。私もCakephp以前はこのようにやっていたのですが、やはりこの『?=』という形はGoogle先生があまりお好きではありません。ですが、CakephpではGoogle先生が大好きなhttp://example.jp/posts/1
という、スラッシュ切りにしてくれるんです。URLもシンプルで、かつ、SEOにも効果的なURL構造にしてくれるなんて、素晴らしいですね!

これまで私の記事通り作って頂いているなら、
http://localhost/bookmark/posts/category/1
というURLでcategory = 1 のデータを呼び出せるようにしてみましょう!

新規ページ用に、function category()を追加しよう

class PostsController extends AppController に新規functionを追加します。前回までのfunction index($id = null) {}をコピーするとよいでしょう。

function category($id = null) {
$this->Post->category = $id;

$con = array('conditions'=>
	array('Post.category'=>$id),
	'order' => array('Post.id DESC'),
	
);

$post = $this->Post->find('all',$con);
$this->set('posts',$post);
}

$this->Post->category = $id;
これだけで、http://localhost/bookmark/posts/category/1がとれてしまいました。?category=1を$_GET[‘category’]の値を受け取ったのと同じです。

このコントローラーの出力用のViewも追加します。view/posts/index.ctpファイルを複製して、category.ctpという名前で保存してください。

これでばっちりページを別けることができました。view/posts/index.ctpとview/posts/category.ctpの2つのctpファイルの上の方に

<ul>
<li><a href="/bookmark/posts/">トップページ</a></li>
<li><a href="/posts/category/0">検索エンジン</a></li>
<li><a href="/posts/category/1">ブログ</a></li>
</ul>

こんな感じでリンクメニューを追加してみてはどうでしょう??
すっかりブックマークアプリっぽくなりましたね!

今回のデータをZIPファイルで固めました。コメントアウトで詳しい解説付きです。
よかったらダウンロードしてご利用ください。
ダウンロードはこちら

今日のまとめ

$this->Post->category = $id;これでhttp://localhost/bookmark/posts/category/1の、category = 1が取れます。今回はcategoryとしてとりましたが、仮にhttp://localhost/bookmark/posts/id/1とでもして、id = 1のページだけを取りたいときは、$this->Post->id = $id;として、’conditions’=>array(‘Post.id’=>$id) としてあげればid = 1にマッチしたデータが取れます。今回はさらっとしたブックマークアプリですから作りませんが、これを利用すれば各URLの詳細ページみたいなのが作れますね!

初夏のJavaScript祭 in サーキュレーションビル ForPro