获取应用程序外的会话(Symfony)

时间:2018-01-08 16:00:28

标签: php symfony session

我在\ web文件夹中创建了一个php文件(这意味着在应用程序之外吗?),我在应用程序内的一个会话中设置了一个变量(在一个控制器动作中),但是我无法在应用程序(在外部php文件中)。我总是空谈。

这是我设置会话的控制器动作

 */
public function questionnaireConfigAction($id,Request $request)
{
    $em=$this->getDoctrine()->getManager();
    $questionTypes=$em->getRepository(QuestionType::class)->findAll();
    $questionnaire = $em->getRepository(Questionnaire::class)->find($id);
    $session = new Session();
    $session->set('fileContext',['questionTypes'=>$questionTypes,'questionnaire'=>$questionnaire]);
    return $this->render('questionnaires/questionnaireConfig/config.html.twig',
        ['questionTypes'=>$questionTypes,
         'questionnaire'=>$questionnaire]);
}

这是外部文件

 use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Response;
use AppBundle\twigExtentions\filesLoader;
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
$loader = require __DIR__.'/../app/autoload.php';

$request = Request::createFromGlobals();
$session = new Session();
$session->start();
dump($session->get('fileContext')); /*get nothing here */ 

1 个答案:

答案 0 :(得分:0)

[解决] 我找到了解决方案。通过使用PhpBridgeSessionStorage类

ini_set('session.save_handler', 'files');
ini_set('session.save_path', 'path/to/save file');
session_start();
$session = new Session(new PhpBridgeSessionStorage());
$session->start();

dump($session->get('fileContext'));

here the symfony doc