public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); $isAdmin = $this->isAdmin; $builder->add('platformRoles', 'entity', array('label' => 'roles', 'class' => 'Claroline\\CoreBundle\\Entity\\Role', 'choice_translation_domain' => true, 'data' => $this->roles, 'mapped' => false, 'expanded' => true, 'multiple' => true, 'property' => 'translationKey', 'disabled' => false, 'query_builder' => function (\Doctrine\ORM\EntityRepository $er) use($isAdmin) { $query = $er->createQueryBuilder('r')->where("r.type = " . Role::PLATFORM_ROLE)->andWhere("r.name != 'ROLE_ANONYMOUS'")->andWhere("r.name != 'ROLE_USER'"); if (!$isAdmin) { $query->andWhere("r.name != 'ROLE_ADMIN'"); } return $query; })); }
/** * @View(serializerGroups={"api"}) * @ApiDoc( * description="Update a group", * views = {"group"}, * input="Claroline\CoreBundle\Form\GroupType" * ) */ public function putGroupAction(Group $group) { $groupType = new GroupType(); $groupType->enableApi(); $form = $this->formFactory->create($groupType, $group); $form->submit($this->request); //$form->handleRequest($this->request); if ($form->isValid()) { $group = $form->getData(); $userRole = $this->roleManager->getRoleByName('ROLE_USER'); $this->groupManager->insertGroup($group); return $group; } return $form; }