I'm using SonataUserBundle without extending FOSUserBundle. I wanted to change the default SonataUser entity, and add or remove some fields.
here is the default User Entity which has been created with SonataEasyExtendsBundle
<?php
/**
* This file is part of the <name> project.
*
* (c) <yourname> <youremail>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Application\Sonata\UserBundle\Entity;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;
/**
* This file has been generated by the Sonata EasyExtends bundle.
*
* @link https://sonata-project.org/bundles/easy-extends
*
* References :
* working with object : http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en
*
* @author <yourname> <youremail>
*/
class User extends BaseUser
{
/**
* @var int $id
*/
protected $id;
/**
* Get id
*
* @return int $id
*/
public function getId()
{
return $this->id;
}
public function __toString()
{
if (parent::getFirstname() != null){
return parent::getFullname();
} else {
return parent::getUsername();
}
}
}
Ok, found the solution, if anyone out there has this problem, this could fix it
these are the procedures:
User
entity via SonataEasyExtends
. By default you can find it in Application/Sonata/UserBundle/Resources/config/doctrine
User
entity to match your needs, this is also in your Application
folder. Your User
entity must be like this before you add or remove anything:
namespace Application\Sonata\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Sonata\UserBundle\Entity\BaseUser as BaseUser;
/**
* User
*
* @ORM\Table(name="fos_user_user")
* @ORM\Entity
*/
class User extends BaseUser
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Get id
*
* @return int $id
*/
public function getId()
{
return $this->id;
}
public function __toString()
{
if (parent::getFirstname() != null){
return parent::getFullname();
} else {
return parent::getUsername();
}
}
}
Generate Admin Class, just using app/console sonata:admin:generate Application/Sonata/UserBundle/Entity/User
override Admin Class, easily copy and paste UserAdmin.php
from Sonata\UserBundle\Admin\Model
to your newly created Admin Class
Optional
UserAdmin:182
from if ($this->getSubject() && !$this->getSubject()->hasRole('ROLE_SUPER_ADMIN'))
to if ($this->getSubject() && $this->getSubject()->hasRole('ROLE_SUPER_ADMIN'))