2016-10-03 1 views
1

Я использую sylius v0.18. Я хочу префикс locale с URL-адресами продукта.префикс sylius product показать URL-адрес с 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

Я нашел решение, переопределив метод getRouteCollectionForRequest в классе Sylius \ Bundle \ CoreBundle \ Routing \ RouteProvider со следующей конфигурацией.

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 
     }