获得FosUser身份验证以持久保存到Easy Admin Entity(用户日志)

时间:2018-07-25 10:57:28

标签: symfony fosuserbundle symfony-3.4 easyadmin

我有一个由EasyAdmin管理的实体产品,我还使用fos UserbUNDLE进行用户管理。 一切正常,但是当我在easyadmin中添加新用户时,我有一个下拉列表的用户,但我想自动拥有经过身份验证的用户。

我已经在“产品”类别的属性中定义了用户与产品之间的一对多关系。

/**
 * @ORM\ManyToOne(targetEntity="User")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
private $user;

产品实体:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Vich\UploaderBundle\Mapping\Annotation as Vich;
use Symfony\Component\Validator\Constraints as Assert;


/**
* Product
*
* @ORM\Table(name="product")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository")
* @Vich\Uploadable
*/
class Product
{
/**
 * @var int
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="reference", type="string", length=150)
 */
private $reference;

 /**
 * @ORM\ManyToOne(targetEntity="Type")
 * @ORM\JoinColumn(name="type_id", referencedColumnName="id")
 */
private $type;

/**
 * @ORM\Column(type="boolean")
 */
public $status;

/**
 * @var string
 *
 * @ORM\Column(name="titre", type="string", length=150)
 */
 private $titre;

用户:

<?php


namespace AppBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

public function __construct()
{
    parent::__construct();
    // your own logic
}
}

如何自动获取?

2 个答案:

答案 0 :(得分:0)

我们可以提供更多详细信息吗?实体和控制器,因为我认为您没有使用好的targetEntity

答案 1 :(得分:0)

我有一个完全相同的问题,我的意思是,在某些情况下,我只需要获得我选择中当前记录的用户信息,有时我就需要从数据库中获取完整的用户列表

也许我找到的解决方案可以帮助您:

Get the logged user info in the easyadmin select

为简单起见,您必须覆盖easyadmin formbuilder并仅询问当前记录的用户信息

$formBuilder->add('user', EntityType::class, array(
                'class' => 'AppBundle:User',
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('u')
                    ->where('u.id = :id')->setParameter('id',$this->getUser()->getId());
                },
            ));
            return $formBuilder;