Intereting Posts

Как использовать сеанс в Symfony с помощью Custom Twig Extension

Что мне нужно

  • Я просто хочу реализовать сеанс в symfony.

вот что я пробовал

проблема

  • im not Gettig любое предупреждение, когда я перезагружаю страницу.
  • пожалуйста, скажите мне, где я ошибаюсь, любое предложение приветствуется.

Если вы хотите вводить сеансы вне контекста в свое пользовательское расширение.

Я бы сделал это.

  //AppKernel +add protected function initializeContainer() { parent::initializeContainer(); if (PHP_SAPI == 'cli') { $this->getContainer()->enterScope('request'); $this->getContainer()->set('request', new \Symfony\Component\HttpFoundation\Request(), 'request'); } } 

Затем в вашем контейнере услуг

  <!-- Custom Twig Extensions --> <service id="yourid" class="yourclasspath"> <argument type="service" id="service_container" /> <tag name="twig.extension" /> </service> 

Затем в вашем twig.php

  class Twig extends \Twig_extension { private $request; public function __construct(Container $container) { $this->request = $container->get('request'); } public function getFunctions() { return array( 'count' => new \Twig_Function_Method($this, 'count'), ); } public function count() { $session = $this->request->getSession(); if(session->has('count')) { $session->set('count') += 1; } else { $session->set('count') = 1; } return $session->get('count'); } } 

Тогда то же самое в твоей веточке

Вы используете старую версию Twig ? Использование Twig_Function_Method устарело.

Если мы проигнорируем тонкие различия между старыми и новыми версиями Twig я бы сделал это так.

Примечание. Это на самом деле решение от Матфея, но я взял на себя смелость немного упростить его 🙂

Определение службы Twig

 <!-- Custom Twig Extensions --> <service id="yourid" class="yourclasspath"> <argument type="service" id="session" /> <tag name="twig.extension" /> </service> 

Файл расширения Twig

 class Twig extends \Twig_extension { private $session; public function __construct(Session $session) { $this->session = $session } public function getFunctions() { return array( new \Twig_SimpleFunction('count', array($this, 'count') ), ); } public function count() { if($this->session->has('count')) { $this->session->set('count') += 1; } else { $this->session->set('count') = 1; } return $this->session->get('count'); } }