调用未定义函数GuzzleHttp\Psr7\build_query()

问题描述 投票:0回答:1

我在网上搜索过,但没有找到解决方案。我知道我犯了一些小错误。我用

openapi-generator
生成了我的代码。我在
nova-components
根目录中有一个名为
RegistroImprese
的目录,我创建了另一个目录
SevenData
并将所有
RegistroImprese
移动到这个新目录中。我遇到了很多问题,但都解决了。在那之前我的代码工作正常。但现在它抛出一个异常,即 query_build 未定义,但这个相同的函数之前工作正常。没有什么对我有帮助。任何帮助将不胜感激。

public function apiRegistroImpresePostRequest($request = null)
{

    $resourcePath = '/api/RegistroImprese';
    $formParams = [];
    $queryParams = [];
    $headerParams = [];
    $httpBody = '';
    $multipart = false;

    if ($multipart) {
        $headers = $this->headerSelector->selectHeadersForMultipart(
            ['application/json']
        );
    } else {
        $headers = $this->headerSelector->selectHeaders(
            ['application/json'],
            ['application/json-patch+json', 'application/json', 'text/json', 'application/_*+json']
        );
    }

    // for model (json/xml)
    if (isset($request)) {
        if ($headers['Content-Type'] === 'application/json') {
            $httpBody = \GuzzleHttp\json_encode(ObjectSerializer::sanitizeForSerialization($request));
        } else {
            $httpBody = $request;
        }
    } elseif (count($formParams) > 0) {

        if ($multipart) {
            $multipartContents = [];
            foreach ($formParams as $formParamName => $formParamValue) {
                $formParamValueItems = is_array($formParamValue) ? $formParamValue : [$formParamValue];
                foreach ($formParamValueItems as $formParamValueItem) {
                    $multipartContents[] = [
                        'name' => $formParamName,
                        'contents' => $formParamValueItem
                    ];
                }
            }
            // for HTTP post (form)
            $httpBody = new MultipartStream($multipartContents);

        } elseif ($headers['Content-Type'] === 'application/json') {
            $httpBody = \GuzzleHttp\json_encode($formParams);

        } else {
            // for HTTP post (form)
            $httpBody = \GuzzleHttp\Psr7\build_query($formParams);
        }
    }


    $defaultHeaders = [];
    if ($this->config->getUserAgent()) {
        $defaultHeaders['User-Agent'] = $this->config->getUserAgent();
    }

    $headers = array_merge(
        $defaultHeaders,
        $headerParams,
        $headers
    );

    $query = \GuzzleHttp\Psr7\build_query($queryParams);
    return new Request(
        'POST',
        $this->config->getHost() . $resourcePath . ($query ? "?{$query}" : ''),
        $headers,
        $httpBody
    );
}
php laravel openapi laravel-nova
1个回答
3
投票

这个问题通过使用

Query::build
解决了。 Guzzle 7.2 后
build_query()
被弃用。

© www.soinside.com 2019 - 2024. All rights reserved.