智能表单控件
Ajax 驱动的自动完成 <select>
使用 Tom Select 和少许 Ajax 为 EntityType
和 ChoiceType
字段注入活力。
composer require symfony/ux-autocomplete
// ... use 语句已隐藏 - 点击显示
class TimeForAMealForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('foods', FoodAutocompleteField::class)
->add('name', TextType::class, [
'label' => 'What should we call this meal?',
])
;
}
}
// ... use 语句已隐藏 - 点击显示
#[AsEntityAutocompleteField]
class FoodAutocompleteField extends AbstractType
{
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'class' => Food::class,
'searchable_fields' => ['name'],
'label' => 'What sounds tasty?',
'choice_label' => 'name',
'multiple' => true,
'constraints' => [
new Count(min: 1, minMessage: 'We need to eat *something*'),
],
// 'security' => 'ROLE_SOMETHING',
]);
}
public function getParent(): string
{
return BaseEntityAutocompleteType::class;
}
}

UX 自动完成
安装它
$ composer require symfony/ux-autocomplete