gpt4 book ai didi

symfony - 重用带有复杂/许多参数的 Symfony 路由

转载 作者:行者123 更新时间:2023-12-04 21:32:17 26 4
gpt4 key购买 nike

我经常发现自己的路线需要 2+(有时是 4+)个参数来生成路线。只要我只需要在几个地方生成路线就可以了。但是我经常发现自己在许多位置都复制了参数列表,包括 Twig 和 PHP( Controller 和服务)。参数通常不仅仅是记录 ID。

例如,假设我有以下路线:

/product/{id}/{category_slug}/{category_sub_slug}/{product_slug}

要在 Twig 中生成它,我需要像这样:
path('product_view', { 
id: product.id,
category_slug: product.subCategory.category.slug,
category_sub_slug: product.subCategory.slug,
product_slug: product.slug
})

这在 1 个地方已经够糟糕了,但是一旦你开始在任何地方应对它就很糟糕,更糟糕的是当有人决定他们不想再包含 ID 时。

问题:有没有办法添加一个可重用的方法,比如 product_path($product)可以在 Twig 和 Controller /服务中使用?或者扩展 Router 或 UrlGenerator 来确定实体/对象应该如何用于路由生成?

我可以先做一个服务来做这件事,然后做一个 Twig 扩展,但这似乎是一件很常见的事情,需要完成很多工作/代码。

一个想法是我可以像这样:
path('product_view', { product: product })
$this->generateUrl('product_view', ['product': product]);

从那里它可以弄清楚如何生成 URL。当然,逻辑是我写的,但我只需要传递路由器。

最佳答案

我认为最简单的解决方案是创建一个自定义服务和 twig 扩展,就像你说的用你自己的 twig 函数。

经过一番调查, path twig function使用 UrlGenerator class并且似乎比创建自定义服务/ Twig 功能更难正确覆盖它。

关于symfony - 重用带有复杂/许多参数的 Symfony 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com