在Kohana中我设置的路由只能满足特定的HTTP方法(GET / POST /等)
题
我探索几个PHP框架和当前的前流道是Kohana的。
有一个Rails的背景我已经习惯于什么Rails社区称之为“REST风格”的路线。因此,一个“GET /职位”显示全部信息,并且由所述帖子控制器的索引方法处理。 A “POST /帖” 创建一个新对象后,并且由Posts控制器的不同的方法来处理。
由于在这两个2所请求的路径是相同的,路由器需要基于HTTP方法作出决定。
时在Kohana的路由器能够这样做的?
解决方案
Kohana的不支持默认的RESTful路由,但有href="http://dev.kohanaphp.com/projects/restful" rel="noreferrer">的RESTful 模块供使用的RESTful维基中
的Kohana V3.x的直接支持的RESTful控制器。只是延长Controller_REST
代替Controller
和所有的路由操作将是请求方法。 (A POST
请求将被定位到action_post
等)
其他提示
您也前()方法将这些行添加到您的控制器:
if ($this->request->method() == "POST")
{
$this->request->action("post_".$this->request->action());
}
因此,获得/控制器/讯息将由action_posts()方法在控制器()处理,而POST /控制器/讯息将由action_post_posts处理方法。
PS:内置Controller_REST在Kohana的3.2除去
检查在类的构造的HTTP方法感觉不良设计我。像轨,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',
));
不隶属于 StackOverflow