2014-09-05 6 views
9

मैं अपने नियंत्रकों में सिम्फनी 2 सत्र चर कैसे बना सकता हूं और एक्सेस कर सकता हूं। मैंने इस तरह इस्तेमाल किया।Symfony2 में सभी नियंत्रकों के लिए सत्र चर सेट करने के लिए कैसे?

$session = new Session(); 
$session->start(); 
$session->set('loginUserId',$user['user_id']); 

मैं जानना चाहता हूं कि मेरे सभी नियंत्रकों में उपरोक्त सत्र चर का उपयोग कैसे करें। नियंत्रक में Symfony में सत्र का उपयोग करने का

उत्तर

19

एक ही रास्ता है:

सेटिंग:

$this->get('session')->set('loginUserId', $user['user_id']); 

हो रही:

$this->get('session')->get('loginUserId'); 

आप मानक च का उपयोग करते हैं संस्करण

+0

धन्यवाद गेब्रियल ... –

+0

तो मेरा उत्तर मददगार था आप में चिह्नित कर सकता है आपकी समस्या के उत्तर के रूप में? –

+0

क्या यह विधि मेरे सभी नियंत्रक में उन सत्र चर का उपयोग करने के लिए लागू है? –

2

http://symfony.com/doc/current/components/http_foundation/sessions.html

use Symfony\Component\HttpFoundation\Session\Session; 

    $session = new Session(); 
    $session->start(); 

    // set and get session attributes 
    $session->set('name', 'Drak'); 
    $session->get('name'); 

    // set flash messages 
    $session->getFlashBag()->add('notice', 'Profile updated'); 

    // retrieve messages 
    foreach ($session->getFlashBag()->get('notice', array()) as $message) { 
    echo '<div class="flash-notice">'.$message.'</div>'; 
    } 
+0

धन्यवाद चार्ल्स .... –

9

ramework डॉक्स से:

Symfony सत्र कई देशी पीएचपी कार्यों को बदलने के लिए डिजाइन किए हैं। अनुप्रयोगों को session_start(), session_regenerate_id(), session_id(), session_name(), और session_destroy() का उपयोग करना चाहिए और इसके बजाय निम्न अनुभाग में API का उपयोग करना चाहिए।

और:

हालांकि यह स्पष्ट रूप से एक सत्र शुरू करने की सिफारिश की है, एक सत्र वास्तव में मांग पर शुरू होगा, वह यह है कि, यदि कोई सत्र अनुरोध पढ़ें/लिखें सत्र डेटा पर किया जाता है।

तो सत्र स्वचालित रूप से प्रारंभ हो जाते हैं और इन्हें एक्सेस किया जा सकता है।

public function indexAction(Request $request) 
{ 
    $session = $request->getSession(); 
    ... 
} 

या:

public function indexAction() 
{ 
    $session = $this->getRequest()->getSession(); 
    // or 
    $session = $this->get('session'); 
    ... 
} 

से: के माध्यम से नियंत्रकों से

// store an attribute for reuse during a later user request 
$session->set('foo', 'bar'); 

// get the attribute set by another controller in another request 
$foobar = $session->get('foobar'); 

// use a default value if the attribute doesn't exist 
$filters = $session->get('filters', array()); 
संबंधित मुद्दे