8

私はいくつかのPHPフレームワークを調査しており、現在の最有力候補はコハナです。

Railsのバックグラウンドを持っているので、Railsコミュニティが「RESTful」ルートと呼ぶものに慣れてきました。したがって、「GET / posts」はすべての投稿を表示し、投稿コントローラーのインデックスメソッドによって処理されます。「POST/posts」は新しいpostオブジェクトを作成し、PostsControllerの別のメソッドによって処理されます。

これら2つのリクエストのパスは同じであるため、ルーターはHTTPメソッドに基づいて決定を下す必要があります。

コハナのルーターはこれを行うことができますか?

4

3 に答える 3

8

KohanaはデフォルトでRESTfulルートをサポートしていませんが、サポートを追加するRESTfulモジュールがあります。使用法については、 RESTfulwikiを参照してください。

Kohana v3.xは、RESTfulコントローラーを直接サポートします。Controller_REST代わりに拡張するだけでController、すべてのルートアクションがリクエストメソッドになります。(POSTリクエストは、などを対象としますaction_post

于 2009-07-15T03:56:30.747 に答える
3

これらの行をコントローラーのbefore()メソッドに追加することもできます。

if ($this->request->method() == "POST")
{
  $this->request->action("post_".$this->request->action());
}

したがって、GET / controller / postsはコントローラーのaction_posts()メソッドによって処理され、POST / controller / postsはaction_post_posts()メソッドによって処理されます。

PS:組み込みのController_RESTはKohana3.2で削除されました

于 2011-08-19T00:08:24.990 に答える
0

クラスコンストラクターでHTTPメソッドをチェックすることは、私には貧弱な設計のように感じます。Railsと同様に、Kohana 3.3はルーター(それらが属する場所)にRESTfulルートを作成できます。

Kohana3.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',
  ));
于 2013-11-30T10:46:14.977 に答える