gpt4 book ai didi

symfony - 在 FOSUserBundle 上记录注册时间和登录时间

转载 作者:行者123 更新时间:2023-12-02 07:36:24 26 4
gpt4 key购买 nike

FOS用户包

我想在用户注册时在用户表上记录诸如createdAt、UpdateAt、loginAt之类的数据。

我在想我应该把这些绳子放在哪里。

我可以找到类似的引用

https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_controllers.md

它说覆盖/src/Acme/UserBundle/Controller/RegistrationController.php

class RegistrationController extends BaseController
{
public function registerAction()
{
$form = $this->container->get('fos_user.registration.form');
$formHandler = $this->container->get('fos_user.registration.form.handler');
$confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');

$process = $formHandler->process($confirmationEnabled);
if ($process) {
$user = $form->getData();

/*****************************************************
* Add new functionality (e.g. log the registration) *
*****************************************************/
$this->container->get('logger')->info(
sprintf('New user registration: %s', $user)
);

if ($confirmationEnabled) {
$this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
$route = 'fos_user_registration_check_email';
} else {
$this->authenticateUser($user);
$route = 'fos_user_registration_confirmed';
}

$this->setFlash('fos_user_success', 'registration.flash.user_created');
$url = $this->container->get('router')->generate($route);

return new RedirectResponse($url);
}

return $this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html.'.$this->getEngine(), array(
'form' => $form->createView(),
));

但我不知道如何使用 formdata 向表中插入数据

喜欢

$post = $form->getData();
$post->setCreatedAt(new \DateTime());
$post->setUpdatedAt(new \DateTime());
$em = $this->getDoctrine()->getEntityManager();
$em->persist($post);
$em->flush();

我是 symfony2 的新手。我想我还在碰到 symfony2 的基本逻辑。感谢您的友好回复。

最佳答案

我解决了这个问题。

我添加了 HasLifecycleCallbacks和两个函数prePersist,preUpdate

在 Acme/UserBundle/Entity/User.php 中

/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*
* @ORM\HasLifecycleCallbacks
*
*/
class User extends BaseUser
{

/**
* @ORM\PrePersist()
*
*/

public function prePersist()
{
$this->createdAt = new \DateTime;
$this->updatedAt = new \DateTime;
}

/**
* Hook on pre-update operations
* @ORM\PreUpdate()
*/
public function preUpdate()
{
$this->updatedAt = new \DateTime;
}

感谢您查看和帮助我。

关于symfony - 在 FOSUserBundle 上记录注册时间和登录时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15983378/

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