2012-04-11 32 views
8

Symfony doc nói:
Symfony2: biến Session toàn cầu trong PHP mẫu

During each request, Symfony2 will set a global template variable app in both Twig and PHP template engines by default. The app variable is a GlobalVariables instance which will give you access to some application specific variables automatically:
app.security - The security context.
app.user - The current user object.
app.request - The request object.
app.session - The session object.
app.environment - The current environment (dev, prod, etc).
app.debug - True if in debug mode. False otherwise.

Ví dụ:
Trong cành lá: {{ app.request.method }}
Trong PHP: echo $app->getRequest()->getMethod() Trong cành lá: {{ app.user.username }}
Nhưng đối với các đối tượng session:
Trong cành: {{ app.session.varname }}
Trong PHP: // I don't know, do you know how to call it?

Tôi đã thử: $session = $app->getSession('uid'); nhưng khi tôi cố gắng để lưu trữ nó vào một cơ sở dữ liệu nó nói với tôi:

Catchable Fatal Error: Object of class Symfony\Component\HttpFoundation\Session could not be converted to string in C:\wamp\www...

Có một thiếu nguồn lực khi nói đến PHP mẫu, nhưng trong trường hợp của tôi, tôi không thể chuyển đổi đối với một số lý do.

Câu hỏi nói cách khác, tương đương trong PHP templating là:
{{ app.session.varname }}?

Trả lời

13

Trong cành lá: {{ app.session.varname }}

Trong PHP: echo $app->getSession()->get('uid');

+1

Hey bạn có chế nhạo tôi không? :) Anh chàng tuyệt vời, điều đó đã làm nó, cảm ơn một tấn cho câu trả lời của bạn. –

+0

Không có mục đích chế nhạo. Tôi đã nhận xét và đặt câu hỏi của bạn để làm rõ vấn đề là địa chỉ nào. Sau đó, @Daniel Ribereiro đi vào và chỉnh sửa nội dung. Không có ý tưởng tại sao nhưng nó sai lầm ý định lên. – Cerad

+0

Tệ của tôi, đó là với ý định tốt. –

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

if ($session->has('varname')) { 
    echo $session->varname 
} 
+1

Bạn có chắc chắn hoạt động trong mẫu page.html.php không? Nó cung cấp cho tôi lỗi này: 'Thông báo: Thuộc tính không xác định: Symfony \ Bundle \ FrameworkBundle \ Templating \ Helper \ SessionHelper :: $ uid trong C: \ wamp \ www \ ...' Tôi đã sử dụng mã của bạn trong Trình điều khiển mặc định cho mỗi bộ điều khiển và hiển thị giá trị phiên, điều mà tôi đang cố tránh bởi câu hỏi của mình ở đây, tôi cần sử dụng biến toàn cục như các tài liệu Symfony2 đã nói ở trên. –

0

Bạn đã cố gắng error_log $ cấp ứng dụng> getSession() để xem những gì nó sẽ trả về?

error_log(var_dump($app->getSession(), true)); 
Các vấn đề liên quan