Symfony 使用 GET 类型将参数传递给方法

基兰·库马尔

我正在使用 php symfony 3.4 版 - GET 方法来调用带参数的方法,但出现以下错误。

service call : http://localhost/myworkspace/AMSCMS/web/app_dev.php/sse/server/events/get?data=1 

method :
/**
     * @Rest\Get("/server/events/get")
     */
    public function getServerEventsGetAction($dt) {
        try {   
            if($dt == 1){
                header('Content-Type: text/event-stream');
                header('Cache-Control: no-cache');
                $time = date('r');
                echo "data: The server time is: {$time}\n\n";
                flush();    
            }                   
        } catch ( Exception $ex ) {
            $result = $display->getJsonException($ex);
        }

    }

Error :
    {"error":{"code":500,"message":"Internal Server Error","exception":[{"message":"Controller \"AppBundle\\Controller\\ServerEventsController::getServerEventsGetAction()\" requires that you provide a value for the \"$dt\" argument. Either the argument is nullable and no null value has been provided, no default value has been provided or because there is a non optional argument after this one.","class":"RuntimeException","trace":[{"namespace":"","short_class":"","class":"","type":"","function":"","file":"C:\\xampp\\htdocs\\myworkspace\\ApartmentManagementSystem\\ApartmentManagementScms\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver.php","line":78,"args":[]},{"namespace":"Symfony\\Component\\HttpKernel\\Controller","short_class":"ArgumentResolver","class":"Symfony\\Component\\HttpKernel\\Controller\\ArgumentResolver","type":"->","function":"getArguments","file":"C:\\xampp\\htdocs\\myworkspace\\ApartmentManagementSystem\\ApartmentManagementScms\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\HttpKernel\\Controller\\TraceableArgumentResolver.php","line":38,"args":[["object","Symfony\\Component\\HttpFoundation\\Request"],["array",[["object","AppBundle\\Controller\\ServerEventsController"],["string","getServerEventsGetAction"]]]]},{"namespace":"Symfony\\Component\\HttpKernel\\Controller","short_class":"TraceableArgumentResolver","class":"Symfony\\Component\\HttpKernel\\Controller\\TraceableArgumentResolver","type":"->","function":"getArguments","file":"C:\\xampp\\htdocs\\myworkspace\\ApartmentManagementSystem\\ApartmentManagementScms\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\HttpKernel\\HttpKernel.php","line":143,"args":[["object","Symfony\\Component\\HttpFoundation\\Request"],["array",[["object","AppBundle\\Controller\\ServerEventsController"],["string","getServerEventsGetAction"]]]]},{"namespace":"Symfony\\Component\\HttpKernel","short_class":"HttpKernel","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->","function":"handleRaw","file":"C:\\xampp\\htdocs\\myworkspace\\ApartmentManagementSystem\\ApartmentManagementScms\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\HttpKernel\\HttpKernel.php","line":68,"args":[["object","Symfony\\Component\\HttpFoundation\\Request"],["integer",1]]},{"namespace":"Symfony\\Component\\HttpKernel","short_class":"HttpKernel","class":"Symfony\\Component\\HttpKernel\\HttpKernel","type":"->","function":"handle","file":"C:\\xampp\\htdocs\\myworkspace\\ApartmentManagementSystem\\ApartmentManagementScms\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\HttpKernel\\Kernel.php","line":200,"args":[["object","Symfony\\Component\\HttpFoundation\\Request"],["integer",1],["boolean",true]]},{"namespace":"Symfony\\Component\\HttpKernel","short_class":"Kernel","class":"Symfony\\Component\\HttpKernel\\Kernel","type":"->","function":"handle","file":"C:\\xampp\\htdocs\\myworkspace\\ApartmentManagementSystem\\ApartmentManagementScms\\web\\app_dev.php","line":29,"args":[["object","Symfony\\Component\\HttpFoundation\\Request"]]}]}]}}
弹射

您没有将 GET 参数作为操作参数,您需要通过 Request 对象获取这些参数:

public function getServerEventsGetAction(Request $request) {
    $dt = $request->get('data');
    // ... check that $data is not null etc
}

或者,您可以更改要包含在 url 中的参数(而不是 GET 参数),这样您就可以像控制器一样正常访问它作为操作参数:

/**
 * @Rest\Get("/server/events/get/{dt}")
 */

并以这种格式使用 url:

http://localhost/myworkspace/AMSCMS/web/app_dev.php/sse/server/events/get/1 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Gradle将参数传递给main方法?

将参数传递给GET请求

如何使用GET方法将GET参数传递给Laravel?

JMeter:使用CSV数据将参数传递给HTTP GET请求查询字符串

使用。&运算符将参数传递给静态方法

有没有一种方法可以使用wrk将参数传递给GET请求?

如何使用“ #selector”将参数传递给方法

如何使用Flask Request将GET参数传递给url

symfony使用get方法禁用类形式的csrf保护

将参数传递给Symfony的$ cache-> get()

如何在Symfony4中将参数传递给自定义的教义类型

使用GET将参数传递给PHP函数

打字稿| 使用参数将类型参数传递给另一个类型

使用GET参数在Symfony 5中生成URL

使用htaccess将目录传递给GET参数而无需重写url

使用Capybara将GET参数传递给控制器

将参数传递给Symfony @ParamConverter

如何使用Saxon将文档类型参数传递给xslt?

如何使用get JSON将参数传递给php

Symfony:将参数传递给Ajax URL

将信息传递给内部方法:使用字段或参数?

如何使用 | 将多个参数传递给 Ruby 方法?

如何使用 GET 方法将 id 传递给同一页面内的模态?

如何将通用参数传递给使用对象的方法?

如何将类型对象作为参数传递给 Web Api Get/Post 方法

将参数传递给烧瓶 GET 函数

将查询参数传递给 GET 请求(使用请求 npm 模块)

如何使用可变参数将任意数量的相同类型参数传递给方法?

Symfony - 将 GET 参数传递给另一条路线?