<?php
namespace App\Form;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormEvent;
use App\Entity\College;
use App\Util\SecurityUtil;
/**
*
* @author wendell.zheng <wxzheng@ustc.edu.cn>
*/
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('role', ChoiceType::class, [
'choices' => array_flip(SecurityUtil::ROLE_NAMES),
'label' => '角色',
'required' => true
])->add('adminCollege', EntityType::class, [
'class' => College::class,
'label' => '管理院系',
'required' => false
]);
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$user = $event->getData();
$form = $event->getForm();
$form->add('name', null, [
'label' => '姓名',
'required' => false,
'disabled' => boolval($user->getName())
])
->add('username', null, [
'label' => '工资号',
'required' => false,
'disabled' => boolval($user->getId())
]);
});
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'attr' => [
'id' => 'user_form'
]
]);
}
}