Symfony2 Twig темы из базы данных? - PullRequest
2 голосов
/ 27 февраля 2012

Как добавить поддержку темы в 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, если шаблон не существует.

Я проверил эти две связки:

Но оба, кажется, не соответствуют моим потребностям. Любая помощь очень ценится.

1 Ответ

4 голосов
/ 27 февраля 2012

Мы используем 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, которую необходимо принять во внимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...