2017-10-16 12 views
1

나는 명령 줄에서 상대 디렉토리에 약간의 문제가 있습니다.심포니 2 상대 경로 명령에서

나는 (php app/console generate : 명령) 명령을 만들었습니다. 이 명령을 사용하여 프로젝트의 "web/myFolder"디렉토리에서 일부 파일을 삭제해야합니다. 명령에서

protected function execute(InputInterface $input, OutputInterface $output) 
    {  
     //$directorio = 'myFolder'; /*Do not work*/   
     $directorio = '\XAMPP\htdocs\MiProject\web\myFolder'; 
     $files = scandir($directorio); 

     foreach($files as $f){ /*do something*/ } 
} 

, 나는 D에서 전체 디렉토리를 작성해야 : 내가 어떤 컨트롤러에서처럼/그래서 나는, 심포니 프로젝트에서 상대 디렉토리가 없습니다. 프로젝트 폴더의 상대 디렉토리를 사용하는 솔루션이 있습니까?

비 관련 디렉토리의 경우 프로젝트를 프로덕션 서버에 배치 할 때이 디렉토리를 바꿔야합니다. 따라서 테스트 환경과 프로덕션 환경 간에는 많은 시간을 변경해야합니다.

감사합니다.

답변

1

일반적으로 AppKernel 파일이있는 디렉터리 (<project_root>/app)를 가리키는 kernel.root_dir과 같은 미리 정의 된 매개 변수를 사용할 수 있습니다.

이 경우에 따라서
// from service/command 
$this->container->getParameters('kernel.root_dir'); 

가 있어야한다 :

그래서 단순히 더 일반적으로 예를

// From controller 
$this->getParameters('kernel.root_dir'); 

또는 컨테이너에있는 PARAMS에 액세스

$directorio = $this->getContainer()->getParameter('kernel.root_dir').'/../‌​web/myFolder'; 

일부를 정보 here in this article.

희망

+0

작품 완벽 도움말 : 감사 마테오 – Angel

+0

안녕 @Angel 당신은 환영합니다! – Matteo

+1

하지만 컨테이너 매개 변수를 변경해야합니다 : $ directorio = $ this-> getContainer() -> getParameter ('kernel.root_dir'). '/ ../web/myFolder' :) :) – Angel