2012-02-27 6 views
2

주제 (현재 테마 경로)가 사용자 별 데이터베이스에 저장되는 Symfony2를 사용하여 테마 지원을 어떻게 추가 할 수 있습니까? 예 :Symfony2 데이터베이스에서 나뭇 가지 테마?

------------------------------------------------------------- 
| User    | id | username | password | theme_name | 
------------------------------------------------------------- 
    Bob     1 Bob  327n829 /Default 
    Alice    2 Alice  2c839n42 /Pink 

그래서, 특정 사용자를 위해, 심포니는 Resources/views/{theme_name}에서 올바른 템플릿을로드하고 템플릿이 존재하지 않는 경우 Resources/views/Default에 폴백 할 수 있습니다.

나는이 두 번들을 확인했습니다

YAML 설정 파일

에서 테마를 정의 할 수 있습니다 그러나 둘 다 맞는없는 것 같다 문자열

  • liip/LiipThemeBundle에서 나뭇 가지 템플릿을로드
  • 답변

    4

    우리는 LiipThemeBundle 우리의 커널 리스너 사용있다

    public function onEarlyKernelRequest(GetResponseEvent $event) 
    { 
        $request = $event->getRequest(); 
    
        if ($request->attributes->has('_theme') === false) { 
         // if you use annotation with doctrine, you'll need to register them before that line 
         $user = $this->container->get('doctrine.orm.entity_manager')->getRepository('UserBundle:User')->findBy(...); 
    
         // you probably will want to set _theme in request context, not in the $request object 
         $request->attributes->set('_theme', $user->getTheme()); 
         $this->container->get('liip_theme.active_theme')->setName($user->getTheme()); 
        } 
        //$this->router->setContext($context); 
    } 
    

    당신이 계정에 걸릴 필요가 LiipThemeBundle와 one problem입니다.

    +0

    답변 주셔서 감사합니다.하지만 실제로 경로를 변경하기 위해 번들을 사용할 필요가 없습니다. RouteListener의 활성 테마를 변경하는 이유를 묻지 않을 수 있습니까? 편집 : 테마 전달 매개 변수를 전환 할 필요가 없습니다. – gremo

    +0

    @Gremo LiipThemeBundle은 프로젝트에 테마 지원을 추가하는 방법입니다. "Symfony가 올바른 템플릿을 Resources/views/{theme_name}에서로드하고 템플릿이없는 경우 Default/Resources/views/Default로로드해야합니다." 그리고 RouteListener가 아니라 EarlyKernelRequest 리스너입니다. "테마 전달 매개 변수를 전환 할 필요가 없습니다."무엇을 의미합니까? – meze

    +0

    @Gremo -이 문제가 생겨도 똑같은 문제가 있습니까? – someuser

    관련 문제