在Kohana中我设置的路由只能满足特定的HTTP方法(GET / POST /等)

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

  •  13-09-2019
  •  | 
  •  

我探索几个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',
  ));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top