のみへのKohanaで私のセットアップルートは、特定のHTTPメソッドを一致させることができます(GET / POST /など)

StackOverflow https://stackoverflow.com/questions/1128777

  •  13-09-2019
  •  | 
  •  

質問

私はいくつかの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_RESTControllerを拡張し、すべてのルートアクションはリクエストメソッドになります。 (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',
  ));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top