2016-02-25 48 views
-2

我想在PHP和TWIG中的Symfony2視圖中設置會話值。我可以像這樣獲得會話價值在symfony2視圖中設置會話值

$ app-> getSession() - > get('whatever');

但不知道如何設置視圖中的會話值。請幫助任何人。

+0

@TomaszMadeyski我想在樹枝中設置會話值,PHP不能訪問或獲取它。所以它與你的不一樣。 – Moeezalikhan

回答

2

這是你的樹枝延伸,你可以把這個代碼下YourBundle/Twig/SessionExtension.php

namespace YourBundle\Twig; 

use Symfony\Component\HttpFoundation\Session\Session; 

class SessionExtension extends \Twig_Extension 
{ 
    private $session; 

    public function __construct(Session $session) { 
     $this->session = $session; 
    } 

    public function getFilters() 
    { 
     return array(
      new \Twig_SimpleFilter('setSession', array($this, 'setSession')), 
     ); 
    } 

    public function setSession($key, $val){ 

     $this->session->set($key, $val); 
     return true; 
    } 

    public function getName() 
    { 
     return 'session_extension'; 
    } 
} 

添加爲樹枝服務;

yourbundle.twig.session_extension: 
     class: YourBundle\Twig\SessionExtension 
     arguments: 
      session: "@session" 
     tags: 
      - { name: twig.extension } 

現在,你可以在樹枝中使用;

{{ 'test'|setSession('myKey', 'myValue') }} 
+0

我想要設置會話不會得到小節的會話 – Moeezalikhan

+1

您可以創建一個小枝擴展,並使用服務容器將@session發送到此擴展。您可以像這樣設置新的會話密鑰和值。 –

+0

我改變了我的答案,因爲你想要的。 –