2012-02-27 11 views
2

テーマ(現在のテーマへのパス)がデータベースごとにユーザーごとに格納されているSymfony2で、テーマのサポートを追加するにはどうすればいいですか?例:Symfony2小枝からデータベースをテーマにしていますか?

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

ので、与えられたユーザーのために、symfonyはResources/views/{theme_name}から正しいテンプレートをロードして、テンプレートが存在しない場合はResources/views/Defaultにフォールバックする必要があります。

私はこれらの2つのバンドルチェックしました:

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}からロードし、テンプレートが存在しない場合はResources/views/Defaultにフォールバックする必要があります。"それはRouteListenerではなく、EarlyKernelRequestリスナーです。 "それはテーマを渡すテーマのパラメータを切り替える必要はありません"あなたはどういう意味ですか? – meze

    +0

    @Gremo - 私は同じ問題を抱えていますか? – someuser

    関連する問題