Итак, чтобы дать ответ на мой вопрос.
Решение заключается в следующем:
Вам нужно создать кастом RedirectController
, который способен обрабатывать
подстановочные знаки в маршруте.
Вот как может выглядеть контроллер:
<?php
namespace Custom\RedirectBundle\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
class RedirectController
{
public function urlRedirectAction(
Request $request,
bool $permanent = false,
string $route = '',
array $dynamicRoutePath =
[]
): RedirectResponse {
$statusCode = $permanent ? 301 : 302;
if ('' !== $route) {
$url = "/".$route;
if (!empty($dynamicRoutePath)) {
$url = $this->getPath($request, $dynamicRoutePath, $url);
}
return new RedirectResponse($url, $statusCode);
}
$route = $this->getPath($request, $dynamicRoutePath);
return new RedirectResponse($route, $statusCode);
}
private function getPath(Request $request, array $path, string $url = ''): string
{
foreach ($path as $pathParameter) {
$pathconfig = $request->get($pathParameter);
$url = $url."/".$pathconfig;
}
return $url;
}
}
Конфигурация в routing.yml:
magazin_category_slug:
path: /magazin/{category}/{slug}
controller: CustomRedirectBundle:Redirect:urlRedirect
defaults:
permanent: true
route: newBaseRoute
dynamicRoutePath:
- category