前缀sylius产品显示带语言环境的URL

时间:2016-10-03 16:45:26

标签: symfony sylius

我正在使用sylius v0.18。我想在locale中添加产品展示网址。

sylius_core:
routing:
    %sylius.model.product.class%:
        field: slug
        prefix: /p
        defaults:
            controller: sylius.controller.product:detailsAction
            repository: sylius.repository.product
            sylius:
                template: SyliusWebBundle:Frontend/Product:show.html.twig
                criteria: {slug: $slug}
                permission: false

我可以在此配置中使用静态字作为前缀。但它不适用于_locale。 prefix: /{_locale}/p

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,通过使用以下配置覆盖Sylius \ Bundle \ CoreBundle \ Routing \ RouteProvider类中的getRouteCollectionForRequest方法。

sylius_core:
routing:
    %sylius.model.product.class%:
        field: slug
        prefix: /{_locale}/p
        defaults:
            controller: sylius.controller.product:detailsAction
            repository: sylius.repository.product
            sylius:
                template: SyliusWebBundle:Frontend/Product:show.html.twig
                criteria: {slug: $slug}
                permission: false

parameters:
    sylius.route_provider.class: App\AppBundle\Routing\Provider\RouteProvider

    class RouteProvider extends BaseProvider
    {

        /**
         * {@inheritdoc}
         */
        public function getRouteCollectionForRequest(Request $request)
        {
        //Overide this method to match the url with _locale
        }