Dar*_*ein 5 symfony symfony-routing symfony-3.4
我经常发现自己的路线需要2个(有时4个以上)参数来生成路线.只要我只需要在几个位置生成路线,这就没问题了.但我经常发现自己在Twig和PHP(控制器和服务)中的许多位置都重现了参数列表.参数通常不仅仅是记录ID.
例如,假设我有以下路线:
/product/{id}/{category_slug}/{category_sub_slug}/{product_slug}
Run Code Online (Sandbox Code Playgroud)
要在Twig中生成这个,我需要这样的东西:
path('product_view', {
id: product.id,
category_slug: product.subCategory.category.slug,
category_sub_slug: product.subCategory.slug,
product_slug: product.slug
})
Run Code Online (Sandbox Code Playgroud)
这在一个地方已经足够糟糕了,但是一旦你开始在任何地方处理它就会很糟糕,甚至当有人决定他们不想再包含ID时更糟糕.
问题:有没有办法添加可重用的方法,比如product_path($product)
可以在Twig和Controllers/Services中使用?或者扩展Router或UrlGenerator以确定实体/对象应如何用于路由生成?
我可以提供服务然后进行Twig扩展,但看起来很常见,需要完成很多工作/代码.
一个想法是我可以在哪里:
path('product_view', { product: product })
$this->generateUrl('product_view', ['product': product]);
Run Code Online (Sandbox Code Playgroud)
从那里它可以弄清楚如何生成URL.当然逻辑是我写的东西,但我只需要通过路由器.
我认为最简单的解决方案是创建自定义服务和树枝扩展,就像您使用自己的树枝功能所说的那样。
经过一些小的调查后,path
twig 函数使用该类UrlGenerator
,并且正确覆盖它似乎比创建自定义服务/twig 函数更困难。
归档时间: |
|
查看次数: |
94 次 |
最近记录: |