2013-06-01 42 views
9

Tôi đã tạo biến phiên trong một trình điều khiển và tôi muốn truy cập biến đó trong một trình điều khiển khác. Trong bộ điều khiển loginsuccess Tôi đặt phiên:Cách truy cập biến phiên trong bộ điều khiển

$session->set('id',$id); 

Làm cách nào để truy cập biến này trong bộ điều khiển khác?

Trả lời

17

session dịch vụ mà bạn nên sử dụng:

$id = $this->get('session')->get('id'); 

hoặc

$this->get('session')->set('id', $id); 
+1

Tôi đồng ý, đó là cách tốt hơn để tiếp tục. –

1

Trong khi câu trả lời Cyprian là hợp lệ, bạn sẽ tìm thấy trong tài liệu hướng dẫn sử dụng sau đây:

use Symfony\Component\HttpFoundation\Session\Session; 

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

// set and get session attributes 
$session->set('id',$id); 
$session->get('id'); //this is the line you are looking for 

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

Lưu ý:

Trong khi nó được khuyến khích để bắt đầu một cách rõ ràng một phiên, một phiên sẽ thực sự bắt đầu theo yêu cầu, có nghĩa là, nếu có yêu cầu phiên được thực hiện để đọc dữ liệu phiên/ghi.

+0

Điểm tốt. Nhưng hãy chú ý rằng đây là tài liệu thành phần. Trên thực tế theo các tài liệu khuôn khổ có một cách thứ ba để chơi với dịch vụ phiên: http://symfony.com/doc/current/book/controller.html#managing-the-session :) – Cyprian

+4

nhưng, có lẽ nó có giá trị để thêm , đối tượng phiên được trả về từ đối tượng Yêu cầu chính xác giống với đối tượng từ vùng chứa dịch vụ – Cyprian

+1

Vì câu hỏi là về truy cập biểu mẫu phiên làm bộ điều khiển, câu trả lời của bạn có ý nghĩa hơn. Nhưng như bạn đã nói, có lẽ đáng nói đến hơn '$ this-> getRequest() -> getSession()' cũng hợp lệ trong ngữ cảnh này! – cheesemacfly

5

Trên một lưu ý tổng quát hơn, nếu điều khiển của bạn kéo dài từ cơ sở Symfony điều khiển (Symfony\Bundle\FrameworkBundle\Controller\Controller), bạn có thể nhận được phiên trong 3 cách sau:

  1. $session = $this->container->get('session');
  2. $session = $this->get('session'); (mà về cơ bản là một phím tắt đến 1)
  3. $session = $request->getSession();
Các vấn đề liên quan