我正在使用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
答案 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
}