yii\web\Request::getBodyParams PHP Method

getBodyParams() public method

Request parameters are determined using the parsers configured in [[parsers]] property. If no parsers are configured for the current [[contentType]] it uses the PHP function mb_parse_str() to parse the [[rawBody|request body]].
See also: getMethod()
See also: getBodyParam()
See also: setBodyParams()
public getBodyParams ( ) : array
return array the request parameters given in the request body.
    public function getBodyParams()
    {
        if ($this->_bodyParams === null) {
            if (isset($_POST[$this->methodParam])) {
                $this->_bodyParams = $_POST;
                unset($this->_bodyParams[$this->methodParam]);
                return $this->_bodyParams;
            }
            $rawContentType = $this->getContentType();
            if (($pos = strpos($rawContentType, ';')) !== false) {
                // e.g. application/json; charset=UTF-8
                $contentType = substr($rawContentType, 0, $pos);
            } else {
                $contentType = $rawContentType;
            }
            if (isset($this->parsers[$contentType])) {
                $parser = Yii::createObject($this->parsers[$contentType]);
                if (!$parser instanceof RequestParserInterface) {
                    throw new InvalidConfigException("The '{$contentType}' request parser is invalid. It must implement the yii\\web\\RequestParserInterface.");
                }
                $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
            } elseif (isset($this->parsers['*'])) {
                $parser = Yii::createObject($this->parsers['*']);
                if (!$parser instanceof RequestParserInterface) {
                    throw new InvalidConfigException("The fallback request parser is invalid. It must implement the yii\\web\\RequestParserInterface.");
                }
                $this->_bodyParams = $parser->parse($this->getRawBody(), $rawContentType);
            } elseif ($this->getMethod() === 'POST') {
                // PHP has already parsed the body so we have all params in $_POST
                $this->_bodyParams = $_POST;
            } else {
                $this->_bodyParams = [];
                mb_parse_str($this->getRawBody(), $this->_bodyParams);
            }
        }
        return $this->_bodyParams;
    }

Usage Example

 /**
  * 从请求中获取值
  * @param $key
  * @param string $value
  * @return string
  */
 protected function get($key, $value = '')
 {
     $params = ArrayHelper::merge($_GET, $_POST);
     $params = ArrayHelper::merge($params, $this->request->getBodyParams());
     if (isset($params[$key])) {
         return $params[$key];
     }
     return $value;
 }
All Usage Examples Of yii\web\Request::getBodyParams