Пользователь, расширенный из 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 содержит сериализацию и десериализацию, которая выводит свойства модели в виде массива, а затем вызывает сериализацию для этого, десериализует и снова устанавливает себя из этого массива.

Я предполагаю, что вы либо переименовали некоторые из этих свойств, либо пытаетесь загрузить модель, которая содержит данные, которые не могут быть обработаны при помощи несериализации, например, потому что данные были усечены в какой-то момент или что-то странное в этом роде. Возможно, вы захотите очистить ваши старые сеансы, потому что, насколько мне известно, сериализация / десериализация используется только для хранения данных в сеансе, или вы можете начать отладку, посмотрев сериализованные данные, которые он пытается десериализовать.

Другие вопросы по тегам