Symfony: как загрузить все пути из одного и того же индексного маршрута (чтобы использовать динамическую маршрутизацию в React SPA) - PullRequest
0 голосов
/ 26 апреля 2018

Я создаю SPA, поддерживаемый Symfony и ApiPlatform, поэтому я хочу всегда загружать мой основной маршрут, несмотря на реальный путь URL.

Я хочу что-то вроде этого:

/**
 * {@inheritdoc}
 */
class DefaultController extends Controller
{
    /**
     * @Route("/*", name="homepage")
     *
     * @return Response
     */
    public function indexAction(): Response
    {
        // replace this example code with whatever you need
        return $this->render('default/index.html.twig');
    }
}

В моих намерениях, также, если URL-адрес похож на /path/to/the/spa/page, я все равно хочу загрузить маршрут DefaultController::indexAction().

Как это сделать? (очевидно, приведенный пример не работает).

1 Ответ

0 голосов
/ 26 апреля 2018

Хорошо, я нашел решение после «освещения».

Я вспомнил, что есть возможность переписать все URL , добавив или удалив косую черту

Читая эту статью, я увидел это:

class RedirectingController extends Controller
{
    /**
     * @Route("/{url}", name="remove_trailing_slash",
     *     requirements={"url" = ".*\/$"})
     */
    public function removeTrailingSlash(Request $request)
    {
        // ...
    }
}

Итак, чтобы перехватить все URL, несмотря на путь, мой DefaultController::indexAction() становится таким:

class DefaultController extends Controller
{
    /**
     * @Route("/{url}",requirements={"url"=".*"}, name="homepage")
     *
     * @return Response
     */
    public function indexAction(): Response
    {
        // replace this example code with whatever you need
        return $this->render('default/index.html.twig');
    }
}

Теперь все URL обрабатываются DefaultController::indexAction(), несмотря на путь URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...