Symfony 2, Sonata User Bundle: недопустимое состояние, массив originalRoles не установлен

Когда я пытаюсь создать нового пользователя, с выбранной ролью или без нее, у меня сразу появляется эта ошибка:

Неверное состояние, массив originalRoles не установлен

Выбор ролей добавляется таким образом (без изменений, напрямую от поставщика):

->add('realRoles', 'sonata_security_roles', array(
                    'label'    => 'form.label_roles',
                    'expanded' => true,
                    'multiple' => true,
                    'required' => false
                ))

А вот код, который возвращает исключение (прямо от поставщика, поэтому, вероятно, не стоит исправлять ошибку здесь, кроме случаев, когда это реальная проблема).

/**
 * {@inheritdoc}
 */
public function reverseTransform($selectedRoles)
{
    if ($this->originalRoles === null) {
        throw new \RuntimeException('Invalid state, originalRoles array is not set');
    }

    list($availableRoles, ) = $this->rolesBuilder->getRoles();

    $hiddenRoles = array_diff($this->originalRoles, $availableRoles);

    return array_merge($selectedRoles, $hiddenRoles);
}

Любые решения или советы?

ОБНОВИТЬ:

Выпуск перенесен в Github Sonata с дополнительной информацией.

1 ответ

Решение

Проблема, вызванная переопределением конструктора в сущности, выходящей из Sonata\UserBundle\Entity\BaseUser

Чтобы решить эту проблему, добавьте parent::construct() в дочерней сущности.

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