2016-10-26 3 views
2

Heroku를 사용하여 Symfony 3 애플리케이션을 호스팅하고 있습니다. 사용자 지정 인증서를 설정해야하는 새 데이터베이스 공급자로 전환하려고합니다.symfony에서 서비스를 만들지 않고 config.yml에서 설정 매개 변수를 설정하는 방법

인증서를 버전 제어하에 저장하지 않으려 고하므로 배포시 환경 변수로 설정된 URL에서 인증서 파일을 다운로드하는 새 명령을 작성하기로했습니다.

incenteev-parameterscomposer.json에 사용하려면이 값을 parameters.yml으로 설정하십시오. 그러나 지금까지이 값을 parameters.yml에서 직접 읽을 수있는 방법이 없다는 것을 알고 있으므로 config.yml에 새로운 URL 매개 변수 인 parameters.yml을 사용해야합니다. 그러나 새 서비스를 만들면됩니다.

배포시 내 인증서를 다운로드 할 수 있도록 새 URL 명령에서이 새 URL 매개 변수를 읽고 싶습니다.

답변

1

당신은 ContainerAwareCommand class에서 명령을 확장하고 다음과 같은 방법을 사용하여 parameters.yml에서 매개 변수에 액세스 할 수 있습니다

$this->getContainer()->getParameter('your_parameter_key'); 

을 또는 당신은 define your command as a service 필요한 매개 변수를 삽입 할 수 있습니다.

+0

매개 변수가 이미 서비스로 정의되어 있지만 명령을 서비스로 정의한 경우에만 작동합니다. 나는 그것을 시도하고 당신에게 돌아갈 것입니다. – tatsuhirosatou

+1

매개 변수를 서비스로 정의 할 수 없습니다. parameters.yml에 매개 변수 값을 정의하고 내 대답에서 제안 된 방법 중 하나를 사용하여 명령 클래스에서 가져와야합니다. 매개 변수에 대한 Symfony 문서를 살펴보십시오. http://symfony.com/doc/current/service_container/parameters.html –

+0

죄송합니다. 매개 변수를 서비스로 정의하는 것이 아닙니다. 필자가 말한 것은 주어진 매개 변수를 사용하는 서비스를 정의해야한다는 것입니다. '$ this-> getContainer() -> getParameter ('your_parameter_key');는 주어진 서비스가 사용하는 매개 변수에서만 작동합니다. 'config.yml'에서 그 매개 변수를 사용하는 서비스가없는 한,'$ this-> getContainer() -> getParameter ('your_parameter_key');로'parameters.yml'에 직접 접근하는 것은 불가능합니다. 두 번째 제안을 사용했고 효과가있었습니다. – tatsuhirosatou

관련 문제