2017-12-20 23 views
1

동적 도메인을 얻기 : Symfony Docs - How to Generate URLs and Send Emails from the Console나는 정확하게이 문제가 발생하고 심포니 콘솔 명령

우리의 이메일 템플릿 대신 "my.real-domain.name"의 "localhost"를 가득되고있다. 나뭇 가지의 "url ('some/path')"를 사용하여 애플리케이션에 대한 링크를 생성 할 때.

그러나 Symfony가 일반적으로 "도메인 당 하나의 설치"인 경우 응용 프로그램이 단일 인스턴스가 여러 도메인을 처리 할 수 ​​있도록 설계되었습니다. 각 고객이 하나의 채널이되는 다양한 구성 채널을 통해 필요한 구성을 구성합니다.

따라서 모든 단일 고객 채널에 대해 "router.request_context.host"및 기타 구성을 피하는 것이 좋습니다.

그래서 모든 콘솔 명령 instad에 제공하는 "--domain"콘솔 매개 변수에서 도메인을 사용하고 싶습니다.

하지만 모든 단일 명령에서이를 수행하는 대신 도메인을 점유하고 console 매개 변수에 따라 "router.request_context"를 동적으로 구성하는 한 곳에서이 작업을 수행해야합니다.

내가 할 수있는 방법이 있습니까?

답변

0

ConsoleEvents::COMMAND을 청취하는 이벤트 디스패처에 리스너를 등록하고 명령의 run 메서드가 호출되기 전에 추가로 구성 할 수 있습니다.

예를 들어, ConsoleCommandEvent 인스턴스에서 설정자를 사용하거나 입력을 변경할 수 있습니다.

https://symfony.com/doc/3.4/components/console/events.html

나는이 이상적인 솔루션입니다 확실하지 않다, 그러나 이것은 내가 지금 생각할 수있는 것입니다.

0

당신은 예를 들어, 도메인 사용 절대 URL을 생성하는 라우터에 알 수 있습니다 :

$domain = $input->getArgument('domain'); 
    $context = $this->getContainer()->get('router')->getContext(); 
    $context->setHost($domain); 
    $route = $this->getContainer()->get('router')->generate('welcome_page', $params, UrlGeneratorInterface::ABSOLUTE_URL); 

    $output->writeln('Use the following url to show the welcome page for the provided domain'); 
    $output->writeln(sprintf('<info>%s</info>', $route)); 

희망이 도움