Измените хост (и порт), сгенерированный помощником symfony / twig url - PullRequest
0 голосов
/ 24 января 2019

Мое приложение Symfony работает как сервис докеров. Так что внутренне он слушает localhost: 80. Но чтобы добраться до него с хост-машины (на OSX, поэтому с помощью Docker-машины) я достигаю его через http://192.168.99.100:8080

Всякий раз, когда я позволяю twig генерировать полный URL (например, {{ url('register') }}), он генерирует URL с локальным хостом в качестве хоста.

Как мне изменить это на нужный мне ip: port combo?

Ответы [ 2 ]

0 голосов
/ 24 января 2019

В моем вопросе я не указал, что URL генерировался из команды, потому что я не думал, что это актуально.

Основываясь на ответе @brevis, я теперь знаю, что искать (контекст маршрутизатора), что привело меня на эту страницу: https://symfony.com/doc/current/console/request_context.html

На этой странице написано, что вы должны добавить это:

# config/services.yaml
parameters:
    router.request_context.host: 'example.org'
    router.request_context.scheme: 'https'
    router.request_context.base_url: 'my/path'
    asset.request_context.base_path: '%router.request_context.base_url%'
    asset.request_context.secure: true

Какой самый простой ответ для этой конкретной проблемы.

0 голосов
/ 24 января 2019

Этого можно добиться, переопределив параметры контекста маршрутизатора (хост, порт) в прослушивателе событий kernel.request.Проверьте этот ответ https://stackoverflow.com/a/31859779/1007620

Ваш onRequest() метод должен выглядеть следующим образом:

public function onRequest(GetResponseEvent $event)
{
    if (!$event->isMasterRequest()) {
        return;
    }

    $this->router->getContext()->setHost('192.168.99.100');
    $this->router->getContext()->setHttpPort('8080');
    $this->router->getContext()->setHttpsPort('8080');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...