Подтвердить что ты не робот

Как перенаправить с параметрами в routing.yml?

В routing.yml вы можете делать такие вещи, как:

redirect_old_url_to_new:
    pattern:   /old-pattern
    defaults:  
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: /new-pattern
        permanent: true

Будет перенаправлен URL /old-pattern на /new-pattern. Однако, если у меня есть параметр, как можно преобразовать параметр в новый путь, например:

redirect_old_url_to_new:
    pattern:   /old-pattern/{page}
    defaults:  
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: /new-pattern/{page}
        permanent: true

Это НЕ работает и будет перенаправляться на /new-pattern/{page} буквально и поэтому будет перенаправляться с /old-pattern/23 на /new-pattern/{page}.

4b9b3361

Ответ 1

Если имя параметра идентично, тогда параметр будет передан автоматически:

FirstRoute:
  pattern: /firstroute/{page}
  defaults:
      _controller: Bundle:Controller:action

# SecondRoute will redirect to FirstRoute. 
# ex: /secondroute/1 redirects to /firstroute/1            
SecondRoute:
  pattern: /secondroute/{page}
  defaults:
      _controller: FrameworkBundle:Redirect:redirect
      route: FirstRoute
      permanent: true

Ответ 2

Похоже, что в книге Symfony есть ошибка

root:
    pattern: /
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: /app
        permanent: true

Как сказал Arms, это "FrameworkBundle: перенаправление: перенаправление", а не "FrameworkBundle: перенаправление: urlRedirect"

Ответ 3

Я раньше ошибался, это работает для меня:

redirection:
    path: /exercices.html
    defaults:
      _controller: FrameworkBundle:Redirect:redirect
      route: blog
      slug: url-of-the-post
      permanent: true

Поместите прямо parameter_name: parameter_value под route.

Ответ 4

Вы можете перенаправить корень в .yml следующим образом:

root:
    path: redirected_path
    defaults:
        _controller: FrameworkBundle:Redirect:urlRedirect
        path: destination_path
        permanent: true|false

или

root:
    path: redirected_path
    defaults:
        _controller: FrameworkBundle:Redirect:redirect
        route: destination_route_name
        permanent: true|false