Symfony2 응용 프로그램의 루트 dir를 얻는 방법
컨트롤러 내부에서 루트 앱 디렉토리를 가져오는 가장 좋은 방법은 무엇입니까?콘트롤러 밖으로 꺼낼 수 있나요?
이제 인수로서 (파라미터에서) 서비스에 전달하면 다음과 같이 취득할 수 있습니다.
services:
sr_processor:
class: Pro\Processor
arguments: [%kernel.root_dir%]
Symfony2에서 이 정보를 얻을 수 있는 더 쉽고 좋은 방법이 있을까요?
업데이트 2018-10-21:
이번 주부터getRootDir()
더 이상 사용되지 않습니다.사용하세요getProjectDir()
대신에, 무자라프 알리의 코멘트란에 제시된 바와 같이.
—-
사용방법:
$this->get('kernel')->getRootDir();
웹 루트를 원하는 경우:
$this->get('kernel')->getRootDir() . '/../web' . $this->getRequest()->getBasePath();
컨트롤러의 액션 메서드에서 동작합니다.
EDIT: 서비스에 대해서는 가능한 한 깔끔하다고 생각합니다만, 완전한 커널 서비스를 인수로서 전달하겠습니다만...하지만 이것도 효과가 있을 거야
$projectRoot = $this->get('kernel')->getProjectDir();
웹/프로젝트 루트를 가져옵니다.
이 경로를 사용하여 코드가 아닌 프로젝트의 일부(예: 업로드 디렉터리 또는 SQLite 데이터베이스)에 액세스하는 경우 다음과 같이 경로를 매개 변수로 변경하는 것이 좋습니다.
parameters:
database_path: '%kernel.root_dir%/../var/sqlite3.db'
이 파라미터는 필요한 모든 위치에 삽입할 수 있으므로 코드 내의 경로를 더 이상 조작할 필요가 없습니다.또한 이 파라미터는 전개 시에 덮어쓸 수 있습니다.마지막으로, 모든 유지관리 프로그래머는 당신이 그것을 무엇에 사용하고 있는지 더 잘 알게 될 것입니다.
업데이트: kernel.root_dir의 지속적인 사용량이 수정되었습니다.
다음과 같이 정규 표현도 사용할 수 있습니다.
$directoryPath = $this->container->getParameter('kernel.root_dir') . '/../web/bundles/yourbundle/';
$directoryPath = preg_replace("/app..../i", "", $directoryPath);
echo $directoryPath;
Symfony 3.3에서는 다음과 같이 바인딩을 사용할 수 있습니다.
services:
_defaults:
autowire: true
autoconfigure: true
bind:
$kernelProjectDir: '%kernel.project_dir%'
그런 다음 모든 컨트롤러 OR 서비스에서 $kernelProjectDir 매개 변수를 사용할 수 있습니다.같은
class SomeControllerOrService
{
public function someAction(...., $kernelProjectDir)
{
.....
언급URL : https://stackoverflow.com/questions/9215753/how-to-get-the-root-dir-of-the-symfony2-application
'programing' 카테고리의 다른 글
변수가 데이터 프레임인지 확인 (0) | 2022.11.16 |
---|---|
VueJ: @keydown, @keyup, 그리고 이것.$refs는 입력에서는 동작하지만 md-text area에서는 동작하지 않습니다. (0) | 2022.11.16 |
PHP를 사용하여 리모트파일이 존재하는지 확인하려면 어떻게 해야 합니까? (0) | 2022.11.16 |
MySQL 메모리 사용량 최대 100% 증가 (0) | 2022.11.16 |
유효한 Java의 Builder 패턴 (0) | 2022.11.07 |