2012-11-19 1 views
4

여러 프로젝트에서 사용할 새로운 컨트롤러 공급자를 만들고 있는데이 컨트롤러 공급자의 디렉터리 내에 몇 가지 나뭇 가지 템플릿이 있어야 일부 경로에서 사용할 수 있습니다. 그 공급자. 모든 프로젝트 파일을이 프로젝트 제공자 디렉토리 (twig.path 지정된 디렉터리 아래에 있음)에 사용할 모든 프로젝트 파일에 복사해야하는 번거 로움이 없으므로 내 질문은 다음과 같습니다.Silex 컨트롤러 공급자를위한 대체 twig 경로

어떻게 할 수 있습니까? twig.path 디렉토리 아래에 있지 않은 템플릿을 렌더링합니까? 나뭇 가지 서비스 공급자에게 컨트롤러 제공 업체 파일에 __DIR__.'/views/some.template.twig'과 같은 특정 경로를 렌더링하도록 말할 수 있습니까? 이 같은

답변

1

뭔가

$app['twig'] = $app->share($app->extend('twig', function($twig) use ($yourNewPath) { 
    $twig->addLoader(new \Twig_Loader_Filesystem($yourNewPath)); 
    return $twig; 
})); 
4

당신은 $ 응용 프로그램 [ 'twig.loader.filesystem를']를 사용하여 나뭇 가지 로더에 액세스 할 수 있습니다 작동합니다.

예를 들어 있습니다

$app['twig.loader.filesystem']->addPath(
    $pathToTemplates 
); 

연결 방법에 컨트롤러 클래스에 넣고도 Twig_Loader_Filesystem :: prependPath은()

또한 경로에 대한 네임 스페이스를 지정할 수 있습니다 존재한다. 이렇게하려면 네임 스페이스의 이름을 두 번째 매개 변수 인 'NAMESPACE'로 추가하십시오. 이 경우 $app['twig']->render('@NAMESPACE/pathToATemplate'); 네임 스페이스 앞에 @ -char를 주면 템플릿에 액세스 할 수 있습니다.