Php Symfony使用GET Type将参数传递给方法

Php Symfony使用GET Type将参数传递给方法,php,symfony,get,parameter-passing,internal-server-error,Php,Symfony,Get,Parameter Passing,Internal Server Error,我正在使用PHPSymfonyVersion3.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 getServerEventsGet

我正在使用PHPSymfonyVersion3.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参数作为操作参数获取,您需要通过请求对象获取这些参数:

public function getServerEventsGetAction(Request $request) {
    $dt = $request->get('data');
    // ... check that $data is not null etc
}
或者,您也可以更改要包含在url中的参数(而不是GET param),这样您就可以像控制器一样正常地将其作为操作参数访问:

/**
 * @Rest\Get("/server/events/get/{dt}")
 */
并使用以下格式的url:

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

如果你检查一个错误,你就会找到答案。你们检查了吗?是的,但我想通过方法的参数列表接收参数,就像'Request$Request'对象一样。如何在GET类型中执行此操作。只需删除向控制器传递
$dt