Symfony始终包含路由默认值

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

所以基本上,我正在努力实现这一目标:New in Symfony 4.3: Always Include Route Default Values

我有一个task实体,它具有多个状态,例如newopenclosed

因此,我正在尝试生成路由/tasks/new/tasks/open/tasks/closed。但是,如果我的路线中没有设置任何选项,我希望它使用new作为默认值,并将其添加到网址中。

我的控制器:

/**
 * @Route("/tasks/{!status?new}", name="app_tasks")
 */
public function tasks(TaskRepository $taskRepository, string $status)
{
    $tasks = $taskRepository->findBy(['status' => $status]);
    return $this->render('tasks/index.html.twig', ['tasks' => $tasks]);
}

但是,这导致没有一条匹配的路线。

/tasks/new  => no route found  => should work
/tasks/open => no route found  => should work
/tasks      => no route found  => should work & route should be /tasks/new
etc.

[主要问题似乎是!之前的status。如果我将其完全删除,则除了new任务的路由看起来像/tasks而不是/tasks/new-我真正想要的东西之外,一切都按预期进行。

我已经尝试清除我的缓存-尽管无法正常工作。 Symfony版本是4.4.2。有任何想法吗?谢谢

symfony routing symfony4
1个回答
0
投票

您实际想要的是:Optional Parameters

这样定义您的路线:

/**
 * @Route("/tasks/{page}", name="app_tasks", requirements={"status"="(new|open)"})
 */
public function tasks(TaskRepository $taskRepository, string $status = new)
{
  $tasks = $taskRepository->findBy(['status' => $status]);
  return $this->render('tasks/index.html.twig', ['tasks' => $tasks]);
}
© www.soinside.com 2019 - 2024. All rights reserved.