I have two entities namely, User
and Role
which has a many to many relationship between them. I generated a CRUD and it worked fine but the UserType
form renderd a select menu for choosing roles for a user. Because I needed check boxes insted of a dropdown i made following changes to my UserType
class
initial
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('firstName')
->add('lastName')
->add('address')
->add('phone')
->add('nic')
->add('email')
->add('password')
->add('isActive')
->add('roles');
}
after change
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('firstName')
->add('lastName')
->add('address')
->add('phone')
->add('nic')
->add('email')
->add('password')
->add('isActive')
->add('roles',EntityType::class, array('class'=>'AppBundle\Entity\Role',
'multiple'=>true,
'expanded'=>true,));
}
This is where it all started. I can create a new user without any problem but when I try to edit
Warning: spl_object_hash() expects parameter 1 to be object, string given
Error appears without rendering the edit form.
My attempts to resolve the issue
The user entity is used for login my system therefor I return an array of roles belongs to the user.
public function getRoles()
{
$role_data = $this->roles->toArray();
$roles = array();
foreach($role_data as $key=>$role)
{
$roles[] = $role->getName();
}
return $roles;
}
I changed the above getter to simply return an object as follows
public function getRoles()
{
return $this->roles;
}
Now User Create and Edit worked fine but my login is broken since getRoles
is no more returning an array
What I really want is to render the UserType
form with checkboxes for selecting roles but when I try to do that this happened. I tried to find a solution without any success so far.