Symfony动态路由器从实体创建动态路由

时间:2014-04-15 21:49:48

标签: symfony symfony-cmf

我一直在关注symfony CMF,但我无法确定它是否能够解决我的问题。

我想构建一个商店捆绑包,其中每种语言都可以将URL配置为特定产品,即/产品/ {productId} / [productName]用于EN和/ [product_name] - {productctId }.html用于DK - 两者都导致相同的产品。 ([productName]只是意味着内容可以在这里,id是真实的参数)

我的问题是我无法确定是否可以将此类路由添加到默认动态路由器,或者我是否必须自己实现RouteProviderInterface,以及如何使{{path(???)}}生成网址基于所选语言和产品实体作为输入。

1 个答案:

答案 0 :(得分:2)

您有几种选择:

  • 您可以将DynamicRouter与指向您的产品的PHPCR或ORM路由一起使用。每个文档可以有多个路径。它们可以被命名为任何东西,因此要强制执行命名模式,您需要进行一些编码。如果您的产品可以提供引用它们的路由,则DynamicRouter甚至可以直接从产品生成URL。缺点是您需要为每个产品存储数据库条目。
  • 您可以编写自己的RouteProvider,从产品中生成路径对象。 RouteProviderInterface只有几个方法,我希望在你的情况下应该很容易实现。
  • 你看过Sylius了吗? https://github.com/Sylius/Sylius/pull/255尝试将cmf路由组件添加到sylius。也许你可以解决这个问题,或者至少将它作为灵感来使用。
  • 您还可以实现自己的RouterInterface并使用ChainRouter将其挂钩到路由过程中,但这可能有点过分。