Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony始终包含路由默认值_Php_Symfony_Symfony4_Symfony Routing - Fatal编程技术网

Php Symfony始终包含路由默认值

Php Symfony始终包含路由默认值,php,symfony,symfony4,symfony-routing,Php,Symfony,Symfony4,Symfony Routing,因此,基本上我正在努力实现这一目标: 我有一个任务实体,它有多个状态,如新建,打开,关闭 因此,我正在尝试生成路由/tasks/new/tasks/open/tasks/closed。 但是,如果在我的路线中没有设置选项,我希望它使用new作为默认设置,并将其添加到url中 我的控制器: /** * @Route("/tasks/{!status?new}", name="app_tasks") */ public function tasks(TaskRepository $taskRep

因此,基本上我正在努力实现这一目标:

我有一个任务实体,它有多个状态,如新建打开关闭

因此,我正在尝试生成路由
/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.
主要问题似乎是
状态之前
。如果我完全删除它,一切都会按预期工作,除了
新任务的路径看起来像
/tasks
,而不是
/tasks/new
——我真正想要的


我已经尝试清除我的缓存-但没有工作。Symfony版本是4.4.2

对于同一种方法,您可以使用两条路线。一个带弹头,如果未捕获,则默认为一个

或者,根据主要问题的严重程度,您可以在控制器中使用基本的
(如果
)进行检查。

上有一个未解决的问题。 这可能会在较新的版本中得到修复

至于现在,请尝试使用以下方法:

@Route("/tasks/{!status}", name="app_tasks", defaults={"status": "new"})