2014-10-02 9 views
0

환경마다 다른 경로를로드 할 목적으로 내 번들에 대한 사용자 정의 로더를 만들었습니다. 내 로더 클래스는 다음과 같습니다 :Symfony2에서 커스텀 라우트 로더 환경을 얻는 방법은?

class ApiRouteLoader extends Loader 
{ 
    public function load($resource, $type = null) 
    { 
     $collection = new RouteCollection(); 

     $resource = '@ApiBundle/Resources/config/routing.yml'; 
     $type = 'yaml'; 

     $importedRoutes = $this->import($resource, $type); 

     $collection->addCollection($importedRoutes); 

     return $collection; 
    } 

    public function supports($resource, $type = null) 
    { 
     return $type === 'extra'; 
    } 
} 

'로드'기능에서 사용할 환경 이름을 어떻게 얻을 수 있습니까? 커널을 얻는 방법을 찾지 못하는 것 같습니다 (도움이 될 것입니다).

아무도 도와 줄 수 있습니까? 감사!

+0

당신이 말하는 환경 실제로 무엇을 의미합니까 : 어떤 경우

http://symfony.com/doc/current/book/service_container.html? –

답변

1

.을 서비스 컨테이너를 조사하는 데 시간이 좀 걸릴 수도 있습니다.

// services.yml 
services: 
    acme_demo.routing_loader: 
     class: Acme\DemoBundle\Routing\ApiRouteLoader 
     arguments: ['%kernel.environment%'] 
     tags: 
      - { name: routing.loader } 

class ApiRouteLoader extends Loader 
{ 
    protected $env; 

    public function __construct($env) 
    { 
     $this->env = $env; 
    } 
1

kernel.environment 컨테이너 매개 변수를 사용자 지정 라우팅 로더에 삽입 할 수 있습니다.

Btw, 왜 특정 경로에서 경로 파일을로드하는 것 이상의 아무것도 수행하지 않는 라우팅 로더를 만드나요? 당신은 할 수 있습니다 routing.yml 파일에 경로 간단한 수입 : 매개 변수를 주입하는 것은 아주 기본적인 작업입니다

api_routes: 
    resource: "@ApiBundle/Resources/config/routing.yml" 
+0

안녕하세요, Wouter, 답변 주셔서 감사합니다. 로더에 'kernel.environment'를 주입하는 방법에 대한 예제를 알려주시겠습니까? 결국 yml을 각 환경에 정의 된 다양한 라우팅에 대한 리소스로 추가하지는 않을 것입니다. 결국 일부 소스의 변형 및/또는 혼합 경로를 적용하려고합니다. 감사! –

관련 문제