首页 > 解决方案 > 无法启动会话:已启动

问题描述

我已经安装了 Google-mailer、教义-fixtures-bundle 和 webpack-bundle 包。我在这个项目的开始,在那里创建第一个控制器,它应该有一个登录表单。Controller 和 From 是使用命令 bin/console make: controller 和 make: form 创建的,并且没有更改。但是我已经遇到了问题,因为我在调用表单时遇到了错误

无法启动会话:已由 PHP 启动。

我可以用这样一个事实来解释这个消息,即当创建视图时 Symfony 尝试启动一个会话,因为表单受 csrf 保护(应该保持这种状态)。但这应该不是问题,因为 Symfony 管理会话。

php.ini => session.auto_start=0;

框架.yaml:

    framework:
    secret: '%env(APP_SECRET)%'
    #csrf_protection: true
    #http_method_override: true

    # Enables session support. Note that the session will ONLY be started if you read or write from it.
    # Remove or comment this section to explicitly disable session support.
    session:
        handler_id: null
        cookie_secure: auto
        cookie_samesite: lax

    #esi: true
    #fragments: true
    php_errors:
        log: true

HomeController 中的测试功能:

     /**
     * @Route("/testform", name="testform", methods={"GET","POST"})
     */
    public function testform()
    {
        $User = new User();
        $form = $this->createForm(TestFormType::class, $User);
        $form->handleRequest($this->request);
        if ($form->isSubmitted() && $form->isValid()) {

            return $this->redirectToRoute('home');
        }
        return $this->render('home/testform.html.twig', [
            'form' => $form->createView(),
        ]);
    }

测试表格类型:

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('email')
            ->add('forname')
            ->add('name')
            ->add('password');
    }

在此处输入图像描述

标签: phpsymfonysessionviewcsrf

解决方案


推荐阅读