gpt4 book ai didi

php - 使用 session Symfony 时保存元素

转载 作者:可可西里 更新时间:2023-11-01 00:19:52 24 4
gpt4 key购买 nike

我正在尝试使用 Symfony 的 session 。
事实上,我想在登录前完成一个表单。

为此,我想要这个方案:

  1. 保存 session 中的不同字段
  2. 登录/注册
  3. 保存在数据库中


我的 Controller :

    public function customMadeAction(Request $request)
{
$session = $this->container->get('session');

$user = $this->container->get('security.context')->getToken()->getUser();

$CustomMade = new CustomMade();
$form = $this->createForm(new CustomMadeType(), $CustomMade);

$form->handleRequest($request);

if ($user === 'anon.') {
if($form->isValid()) {

# 1-Save in session
var_dump($CustomMade); #I have an array with all I need
$session->set('infos', $CustomMade); #It does not save my informations

# 2-Redirect to login/register
$securityContext = $this->container->get('security.context');
if (!$securityContext->isGranted('ROLE_USER')) {
throw new AccessDeniedException('Accès refusé');
} else {

# 3-Save in database
$em = $this->getDoctrine()->getManager();
$em->persist($CustomMade);
$em->flush();
}
}
}else{
if($form->isValid()) {
$CustomMade->setIdUser($user->getId());
$em = $this->getDoctrine()->getManager();
$em->persist($CustomMade);
$em->flush();
}
}
return $this->render('FrontBundle:Forms:customMade.html.twig', array(
'form' => $form->createView()
));
}

最佳答案

我认为您不能在 session 中存储对象。这里有一些解决方案:

  1. 在 session 中手动存储对象的每个字段
  2. 序列化您的对象并将其保存在 session 中
  3. 将它存储在数据库中,并带有一个标志,表明它尚未附加到用户,并将 id 保存在 session 中

在我看来,1 是最快的实现方式,但如果您稍后向实体添加字段,维护起来会很痛苦。解决方案 2 更好,但反序列化不是那么容易。我认为解决方案 3 是最好的,实现起来并不复杂,也不会导致任何维护问题。

关于php - 使用 session Symfony 时保存元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31518728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com