Symfony 2,奏鸣曲用户包:无效状态,未设置 originalRoles 数组
Symfony 2, Sonata User Bundle : Invalid state, originalRoles array is not set
当我尝试创建一个新用户时,无论是否选择了角色,我都会遇到这个错误:
Invalid state, originalRoles array is not set
角色选择以这种方式添加(未修改,直接来自供应商):
->add('realRoles', 'sonata_security_roles', array(
'label' => 'form.label_roles',
'expanded' => true,
'multiple' => true,
'required' => false
))
这里是 return 异常的代码(直接来自供应商,所以在此处修复错误可能不是一个好主意,除非它是一个真正的问题)。
/**
* {@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 并提供更多信息。
在从 Sonata\UserBundle\Entity\BaseUser
扩展的实体中重新定义构造函数导致的问题
要解决此问题,请在子实体中添加parent::construct()
。
当我尝试创建一个新用户时,无论是否选择了角色,我都会遇到这个错误:
Invalid state, originalRoles array is not set
角色选择以这种方式添加(未修改,直接来自供应商):
->add('realRoles', 'sonata_security_roles', array(
'label' => 'form.label_roles',
'expanded' => true,
'multiple' => true,
'required' => false
))
这里是 return 异常的代码(直接来自供应商,所以在此处修复错误可能不是一个好主意,除非它是一个真正的问题)。
/**
* {@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 并提供更多信息。
在从 Sonata\UserBundle\Entity\BaseUser
要解决此问题,请在子实体中添加parent::construct()
。