remove default role from user filter and role select (#993)

This commit is contained in:
Kevin Papst
2019-08-02 08:31:45 +02:00
committed by GitHub
parent 8e06f94bdd
commit 66594b286a
3 changed files with 20 additions and 10 deletions

View File

@@ -9,9 +9,11 @@
namespace App\Form\Type;
use App\Entity\User;
use App\Security\RoleService;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\OptionsResolver\Options;
use Symfony\Component\OptionsResolver\OptionsResolver;
/**
@@ -22,7 +24,7 @@ class UserRoleType extends AbstractType
/**
* @var RoleService
*/
protected $roles;
private $roles;
public function __construct(RoleService $roles)
{
@@ -34,15 +36,23 @@ class UserRoleType extends AbstractType
*/
public function configureOptions(OptionsResolver $resolver)
{
$roles = [];
foreach ($this->roles->getAvailableNames() as $name) {
$roles[$name] = $name;
}
$resolver->setDefaults([
'label' => 'label.roles',
'choices' => $roles,
'include_default' => false,
]);
$resolver->setDefault('choices', function (Options $options) {
$roles = [];
foreach ($this->roles->getAvailableNames() as $name) {
$roles[$name] = $name;
}
if ($options['include_default'] !== true && isset($roles[User::DEFAULT_ROLE])) {
unset($roles[User::DEFAULT_ROLE]);
}
return $roles;
});
}
/**

View File

@@ -26,10 +26,10 @@ class UserRolesType extends AbstractType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// string[]
->add('roles', UserRoleType::class, [
'label' => 'label.roles',
'multiple' => true,
'expanded' => true,
])
;
}

View File

@@ -298,8 +298,8 @@ class ProfileControllerTest extends ControllerBaseTest
$form = $client->getCrawler()->filter('form[name=user_roles]')->form();
$client->submit($form, [
'user_roles[roles]' => [
'ROLE_TEAMLEAD',
'ROLE_SUPER_ADMIN',
0 => 'ROLE_TEAMLEAD',
2 => 'ROLE_SUPER_ADMIN',
]
]);