Silex - OPTIONS方法

时间:2012-11-29 09:17:17

标签: php rest symfony silex http-method

我正在使用Silex framework来模拟REST服务器。我需要为OPTIONS http方法创建uri,但Application类仅提供PUT,GET,POST和DELETE的方法。是否可以添加和使用自定义http方法?

2 个答案:

答案 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

可以直接用作函数调用的当前动词列表包括:getpostputdeletepatch,{{ 1}}。所以:

options

应该工作得很好。