2016-10-03 8 views
1

私はsylius v0.18を使用しています。ロケールにプロダクトの表示URLを付ける必要があります。接頭辞syliusプロダクトshow URL with 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

以下の設定で、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 
     }