のみへのKohanaで私のセットアップルートは、特定のHTTPメソッドを一致させることができます(GET / POST /など)
質問
私はいくつかのPHPフレームワークを模索していますし、現在のフロントランナーがKohanaのです。
私はレールのコミュニティが「RESTfulな」ルートを呼ぶものに使用になったのRailsのバックグラウンドを持ちます。だから、「GET /ポストは、」すべての投稿を表示し、投稿コントローラーのindexメソッドによって処理されます。 「POST /投稿」新しいポストオブジェクトを作成し、投稿コントローラーの異なる方法で処理されます。
これらの両方の2つの要求でパスが同一であるので、、ルータは、HTTPメソッドに基づいた意思決定を行う必要がある。
これを行うことができるのKohanaのルータですか?
解決
のKohanaはデフォルトでRESTfulなルートをサポートしていませんが、サポートを追加したRESTful のモジュールをrel="noreferrer"> href="http://dev.kohanaphp.com/projects/restful" をrel="noreferrer"> href="http://dev.kohanaphp.com/wiki/restful"
Kohanaのバージョン3.xは直接RESTfulなコントローラをサポートしています。ただ、代わりにController_REST
のController
を拡張し、すべてのルートアクションはリクエストメソッドになります。 (POST
要求は等action_post
する標的にする。)
他のヒント
また、あなたのコントローラの前に()メソッドに以下の行を追加することができます:
if ($this->request->method() == "POST")
{
$this->request->action("post_".$this->request->action());
}
POST /コントローラ/ポストaction_post_posts()メソッドによって処理されている間、そう/コントローラ/ポストは、コントローラーにaction_posts()メソッドによって処理されます取得します。
PS:ビルトインController_REST Kohanaの3.2で削除されました。
クラスのコンストラクタでのHTTPメソッドを確認する私には貧しいデザインのように感じています。 Railsのと同じように、Kohanaの3.3は、(彼らが属している)ルータでRESTfulなルートを作成することができます。
Kohanaの3.3ルートのドキュメントをチェックアウトするフィルタします。
ここでは一例です。
Route::set('Posts', 'posts/<id>', array('id' => '\d+'))
->filter(function($route, $params, $request) {
$params['action'] = strtolower($request->method());
return $params;
})
->defaults(array(
'controller' => 'Post',
));