【问题标题】:Symfony getMethod() vs getRealMethod()Symfony getMethod() 与 getRealMethod()
【发布时间】:2014-07-29 16:51:07
【问题描述】:

我知道 symfony api 解释 getMethod() 获取请求“预期”方法,getRealMethod() 获取“真实”请求方法,但我无法弄清楚“预期”和“真实”是什么意思。 谁能告诉我? 谢谢

【问题讨论】:

    标签: symfony getmethod


    【解决方案1】:

    getRealMethod()返回real请求方法,而getMethod()返回intended请求方法,这意味着真正的请求方法是POST,但symfony将其视为其他人喜欢DELETE

    请看下面的例子:

    <form method="post" action="..." >
      <input type="hidden" name="_method" value="DELETE" />
      ...
    </form>
    

    真正的请求方法是POST,而getMethod()会返回DELETE

    查看来源:

    /**
     * Gets the request "intended" method.
     *
     * If the X-HTTP-Method-Override header is set, and if the method is a POST,
     * then it is used to determine the "real" intended HTTP method.
     *
     * The _method request parameter can also be used to determine the HTTP method,
     * but only if enableHttpMethodParameterOverride() has been called.
     *
     * The method is always an uppercased string.
     *
     * @return string The request method
     *
     * @api
     *
     * @see getRealMethod
     */
    public function getMethod()
    {
        if (null === $this->method) {
            $this->method = strtoupper($this->server->get('REQUEST_METHOD', 'GET'));
    
            if ('POST' === $this->method) {
                if ($method = $this->headers->get('X-HTTP-METHOD-OVERRIDE')) {
                    $this->method = strtoupper($method);
                } elseif (self::$httpMethodParameterOverride) {
                    $this->method = strtoupper($this->request->get('_method', $this->query->get('_method', 'POST')));
                }
            }
        }
    
        return $this->method;
    }
    
    /**
     * Gets the "real" request method.
     *
     * @return string The request method
     *
     * @see getMethod
     */
    public function getRealMethod()
    {
        return strtoupper($this->server->get('REQUEST_METHOD', 'GET'));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2015-06-04
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多