【问题标题】:Symfony Always Include Route Default ValuesSymfony 总是包含路由默认值
【发布时间】:2020-04-21 22:56:41
【问题描述】:

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

我有一个 task 实体,它有多种状态,例如 newopen & 关闭

出于这个原因,我正在尝试生成路线/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。

【问题讨论】:

    标签: php symfony symfony4 symfony-routing


    【解决方案1】:

    也许您可以为同一方法使用 2 条路线。一个带有蛞蝓,如果没有被抓到则默认一个。

    或者您可以在控制器中使用基本的if 进行检查,具体取决于您的主要问题。

    【讨论】:

      【解决方案2】:

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

      至于现在尝试使用以下内容:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-17
        • 2011-10-13
        • 2011-10-05
        相关资源
        最近更新 更多