PHP和Symfony相当新:我如何从AppKernel.php中包含的include文件中访问各种会话变量?我正在使用Symfony 2.8。我已经成功测试了以下内容,但未经正式批准。我更喜欢使用Symfony对象来访问会话。
session_start();
if (isset($session['userid'])) {
$userid = $_SESSION['_sf2_attributes']['userid'];
}
我尝试使用以下内容从Symfony Request对象获取会话,但它看起来像" Request :: createFromGlobals"正在创建另一个Request对象而不是从现有Request对象创建Request对象。
use Symfony\Component\HttpFoundation\Request;
require_once '/var/www/html/vendor/autoload.php';
...
$request = Request::createFromGlobals();
$session = $request->get('session');
$ session变量返回null。
答案 0 :(得分:0)
您可以在事件侦听器中访问会话变量。以下是kernel.request事件的监听器示例:
services:
app.security:
class: AppBundle\EventListener\Security
arguments: [@session]
tags:
- { name: kernel.event_listener, event: kernel.request, method: checkAccess }
AppBundle \ EventListener \ Security类的一部分:
namespace AppBundle\EventListener;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class Security
{
/**
* @var \Symfony\Component\HttpFoundation\Session\Session
*/
protected $session;
/**
* The constructor.
*
* @param Session $session
*/
public function __construct(Session $session)
{
$this->session = $session;
}
/**
* @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
*/
public function checkAccess(GetResponseEvent $event)
{
// Do what you like...
}
}