Пользователь, расширенный из FOSUserBundle, вызывает unserialize() Ошибка при смещении в списке Easyadmin
Я использую 1.16.10 версию EasyAdminBundle. Я создал сущность User, расширил ее из модели FOSUser (как в документации) и добавил ее в файл конфигурации easyadmin. В результате я получил следующую ошибку:
Во время рендеринга шаблона было сгенерировано исключение ("Примечание: unserialize(): ошибка по смещению 0 из 34 байтов").
Полное описание от трассировки стека:
CRITICAL - Uncaught PHP Exception Twig_Error_Runtime: "Возникло исключение во время рендеринга шаблона ("Notice: unserialize(): ошибка со смещением 0 из 34 байтов ")." в строке \vendor\javiereguiluz\easyadmin-bundle\Resources\views\default\list.html.twig 132
Итак, код моей сущности:
namespace BackofficeBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* AclUser
*
* @ORM\Entity(repositoryClass="BackofficeBundle\Repository\AclUserRepository")
* @ORM\Table(name="Acl_User")
*/
class AclUser extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="ip_address", type="string", length=255, nullable=true)
*/
private $ipAddress;
/**
* @var boolean
*
* @ORM\Column(name="locked", type="boolean")
*/
private $locked = false;
/**
* @ORM\Column(name="expired", type="boolean")
*/
private $expired = false;
/**
* @ORM\Column(name="expires_at", type="datetime", nullable=true)
*/
private $expiresAt;
/**
* @ORM\Column(name="credentials_expired", type="boolean", nullable=true)
*/
private $credentialsExpired;
/**
* @ORM\Column(name="credentials_expire_at", type="datetime", nullable=true)
*/
private $credentialsExpireAt;
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime", nullable=false)
*/
private $createdAt;
/**
* @var \DateTime
*
* @Gedmo\Timestampable(on="update")
*
* @ORM\Column(name="updated_at", type="datetime", nullable=false)
*/
private $updatedAt;
public function __construct()
{
parent::__construct();
$this->createdAt = new \DateTime('now');
}
/** generated getters and setters **/
}`
Мой файл user.yml, импортированный в config.yml:
easy_admin:
entities:
User:
class: BackofficeBundle\Entity\AclUser
list:
fields:
- id
- username
- email
- enabled
- lastLogin
- { property: roles, type: json_array, template: '@BackofficeBundle/Resources/views/fields/role.html.twig' }
form:
fields:
- username
- email
- enabled
- lastLogin
- { property: 'plainPassword', type: 'text', type_options: { required: false } }
- { property: 'roles', type: 'choice', type_options: { multiple: true, choices: { 'ROLE_APP_SUPER_ADMIN' : 'ROLE_APP_ADMIN', 'ROLE_APP_ADMIN' : 'ROLE_APP_USER', 'ROLE_APP_USER' : 'ROLE_USER' } } }`
Что я сделал не так? Что вызывает эту ошибку? Как я могу решить это?
1 ответ
Базовая пользовательская модель FOS UserBundle содержит сериализацию и десериализацию, которая выводит свойства модели в виде массива, а затем вызывает сериализацию для этого, десериализует и снова устанавливает себя из этого массива.
Я предполагаю, что вы либо переименовали некоторые из этих свойств, либо пытаетесь загрузить модель, которая содержит данные, которые не могут быть обработаны при помощи несериализации, например, потому что данные были усечены в какой-то момент или что-то странное в этом роде. Возможно, вы захотите очистить ваши старые сеансы, потому что, насколько мне известно, сериализация / десериализация используется только для хранения данных в сеансе, или вы можете начать отладку, посмотрев сериализованные данные, которые он пытается десериализовать.