所以基本上,我正在努力实现这一目标:New in Symfony 4.3: Always Include Route Default Values
我有一个task实体,它具有多个状态,例如new,open和closed。
因此,我正在尝试生成路由/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。有任何想法吗?谢谢
您实际想要的是: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]);
}