2012年11月18日日曜日

routes.phpの設定(メモ)

ほんとうにメモ程度に。
ルーティングの設定でroutes.phpをさわってみました。


<掲示板の例>
app/classes/controller/bbs.php
class Controller_Bbs extends Controller_Template
{
    // 掲示板一覧
    public function action_index() { }
}

app/classes/controller/bbs/article.php
class Controller_Bbs_Article extends Controller_Template
{
    // 記事一覧
    public function action_index($bbs_id = null) { }

    // 記事書き込み
    public function action_post($bbs_id = null) { }
}

まず掲示板一覧のアドレス
http://localhost/fuelphp/bbs/

これはいい。
けど、記事一覧のアドレス
http://localhost/fuelphp/bbs/article/<bbs_id>

掲示板のIDを渡すようにしたいけどなんか格好わるい。。。
掲示板のIDというより記事のIDに見えるし。

さらに記事投稿のアドレス
http://localhost/fuelphp/bbs/article/post/<bbs_id>

変だ。
毎回、$bbs_idをチェックするのも面倒だし。


そこでapp/config/routes.phpに以下を追加
'bbs/:bbs_id/article(/:any)?' => 'bbs/article$2',
app/classes/controller/bbs/article.php
class Controller_Bbs_Article extends Controller_Template
{
    protected $bbs_id = null;

    public function before()
    {
        parent::before();
        $this->bbs_id = $this->param('bbs_id');
    }

    // 記事一覧
    public function action_index() { }

    // 記事書き込み
    public function action_post() { }
}


これで、記事一覧のアドレス
http://localhost/fuelphp/bbs/<bbs_id>/article/

記事投稿のアドレス
http://localhost/fuelphp/bbs/<bbs_id>/article/post/


コードもURLも最初に比べるとすっきりしたかな。



0 件のコメント:

コメントを投稿