Symfony 总是包含路由默认值
Symfony Always Include Route Default Values
所以基本上我正在努力实现这一目标:New in Symfony 4.3: Always Include Route Default Values
我有一个 task 实体,它有多个状态,例如 new, 打开 & 关闭.
出于这个原因,我正在尝试生成一条路线 /tasks/new
/tasks/open
/tasks/closed
。
但是,如果我的路线中没有设置选项,我希望它默认使用 new
并将其添加到 url.
我的控制器:
/**
* @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。
也许您可以使用 2 条路线来实现相同的方法。一个带有鼻涕虫,如果没有被抓到则默认为一个。
或者您可以根据您的主要问题在控制器中使用基本 if
检查。
github 上有一个未解决的问题。
这可能会在较新的版本中得到修复。
至于现在尝试使用以下方法:
@Route("/tasks/{!status}", name="app_tasks", defaults={"status": "new"})
所以基本上我正在努力实现这一目标:New in Symfony 4.3: Always Include Route Default Values
我有一个 task 实体,它有多个状态,例如 new, 打开 & 关闭.
出于这个原因,我正在尝试生成一条路线 /tasks/new
/tasks/open
/tasks/closed
。
但是,如果我的路线中没有设置选项,我希望它默认使用 new
并将其添加到 url.
我的控制器:
/**
* @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。
也许您可以使用 2 条路线来实现相同的方法。一个带有鼻涕虫,如果没有被抓到则默认为一个。
或者您可以根据您的主要问题在控制器中使用基本 if
检查。
github 上有一个未解决的问题。 这可能会在较新的版本中得到修复。
至于现在尝试使用以下方法:
@Route("/tasks/{!status}", name="app_tasks", defaults={"status": "new"})