0

我有路线

   detail:
      path:     /{code}
      defaults: { _controller: controller.main:detailAction }

我也有这条路线的控制器

 public function detailAction(Request $request, string $code, int $size, array $params): Response
 {
 }

我的问题是:我怎么能告诉控制器他应该把哪些参数作为int $sizearray $params?我在 symfony 文档中发现,我可能会在defaults部分中特别提到参数,默认值如下

   detail:
      path:     /{code}
      defaults: { _controller: controller.main:detailAction }
      size:        1
      params:      "Hello world!"

但这不是我想要的,因为我不应该有这个参数的默认值,但它应该直接从请求中获取。我如何做到这一点而不使我的路线像/{code}/{size}?即使在这种情况下,我该如何处理数组?

4

2 回答 2

3

您可以通过在控制器中传递参数来生成这样的 url:

 $url = $this->generateUrl("detail", array("code" => $code, ...));

    return $this->redirect($url);

和路由:

  detail:
     path:     /
     defaults: { _controller: controller.main:detailAction }
于 2017-06-23T12:01:23.990 回答
0

如果要指定这样的参数

someurl.io/action/?filter=allopenissues&orderby=created

您应该在您的操作中键入提示请求对象并访问其查询参数包。如果你的控制器扩展了 Symfony 控制器,Request 将被自动传递。

use Symfony\Component\HttpFoundation\Request;
....
public function updateAction(Request $request)
{
    $request->query->get('myParam'); // get myParam from query string 
}
于 2017-06-26T08:40:27.120 回答