我正在使用Silex framework来模拟REST服务器。我需要为OPTIONS http方法创建uri,但Application
类仅提供PUT,GET,POST和DELETE的方法。是否可以添加和使用自定义http方法?
答案 0 :(得分:4)
我做了同样的事情,但我不记得我是如何设法使它工作的。我现在不能尝试。当然,您必须扩展ControllerCollection
:
class MyControllerCollection extends ControllerCollection
{
/**
* Maps an OPTIONS request to a callable.
*
* @param string $pattern Matched route pattern
* @param mixed $to Callback that returns the response when matched
*
* @return Controller
*/
public function options($pattern, $to)
{
return $this->match($pattern, $to)->method('OPTIONS');
}
}
然后在您的自定义Application
课程中使用它:
class MyApplication extends Application
{
public function __construct()
{
parent::__construct();
$app = $this;
$this['controllers_factory'] = function () use ($app) {
return new MyControllerCollection($app['route_factory']);
};
}
/**
* Maps an OPTIONS request to a callable.
*
* @param string $pattern Matched route pattern
* @param mixed $to Callback that returns the response when matched
*
* @return Controller
*/
public function options($pattern, $to)
{
return $this['controllers']->options($pattern, $to);
}
}
答案 1 :(得分:3)
由于这个问题在Google搜索中仍然排名很高,我会注意到,现在几年之后,Silex为OPTIONS
添加了一个处理程序方法
http://silex.sensiolabs.org/doc/usage.html#other-methods
可以直接用作函数调用的当前动词列表包括:get
,post
,put
,delete
,patch
,{{ 1}}。所以:
options
应该工作得很好。