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()
в дочерней сущности.