php - Symfony 4 开始会话
问题描述
symfony 新手,我正在尝试开始我的第一个会话
这是我的整个代码,位于public/php/session.php
:
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
$session = new Session();
$session->start();
我收到错误Uncaught Error: Class 'Symfony\Component\HttpFoundation\Session\Session' not found
phpstorm 没有错误,我需要安装一个模块吗?我试过composer require session
了,但这不起作用
我还尝试了 symfony dochandler_id: ~
方法config/packages/framework.yaml
使用此方法,没有错误消息,但也没有会话 cookie
这是我的控制器:
class HomeController extends AbstractController {
// start session
public function index(SessionInterface $session) {
$session->set('foo', 'bar');
$session->get('foo');
}
/**
* @Route("/", name="home")
*/
public function homepage(){
return $this->render('home.html.twig');
}
}
解决方案
如果您使用整个 symfony 框架,它会在您读取、写入甚至检查会话中是否存在数据时自动启动会话。您无需手动执行此操作。
您需要做的是定义一个您将使用的适配器或将其留给 php configruation
配置/包/framework.yaml
framework:
+ session:
+ # The native PHP session handler will be used
+ handler_id: ~
然后在您的服务中,控制器只需获得会话服务
启用 SF4 和自动接线,在控制器动作中
public function index(SessionInterface $session)
{
$session->set('foo', 'bar');
$session->get('foo');
}
就这样。在https://symfony.com/doc/current/controller.html#session-intro中查看更多信息
您的代码不在框架内,它不会工作,因为没有自动加载器可以从作曲家加载组件,如果您包含 vendor/autoload.php 但不这样做,它会工作。
推荐阅读
- android - 在 kotlin 的伴随对象中访问应用程序上下文
- javascript - SVG的
元素的高度错误 - c# - 如何使用 c# webmethod 从通过 ajax 请求传递的 base64 字符串保存图像
- middleware - 连接到 weblogic 服务器时出现错误“无法找到或加载主类 weblogic.Admin”
- php - 如何将命名的 PHP $_GET 参数转换为数字索引数组?
- python-3.x - Python3.7与Tensorflow不兼容?
- java - executorService多线程池的性能
- c# - 如何授权 gmail 使用 botframework 网络频道阅读我的收件箱
- r - 获取 SVM 中的特征重要性
- python - Python正则表达式集合中的0个或多个单词