(Symfony 4 Forms) 在选择字段中显式添加禁用选项

布伦特·海戈尔德

这是我的表单类型类:

  use App\Entity\User;
use App\Entity\UserSubscriptionTier;
use App\Security\UserProvider;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use App\Repository\UserRepository;

class FeedFilterType extends AbstractType
{
    /**
     * @var UserProvider
     */
    protected $userProvider;

    /**
     * @var UserRepository $userRepository
     */
    protected $userRepository;

    public function __construct(UserProvider $userProvider, UserRepository $userRepository)
    {
        $this->userProvider = $userProvider;
        $this->userRepository = $userRepository;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('creators', ChoiceType::class, [
                'choices'  => $this->userRepository->getCreatorsSubscribedToByUser($this->userProvider->getCurrentUser()),
                'choice_label' => 'name',
                'required' => false,
                'multiple' => true,
                'expanded' => false,
                'attr'=> array('class'=>'custom-select'),
                'choice_value' => function (User $entity = null) {
                    return $entity ? $entity->getId() : '';
                },
                'placeholder' => 'Subscriptions' /* This didn't work */ 
            ])
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array());
    }
}

我想要做的是,手动插入一个禁用选项作为我选择中的第一个选项,因此它显示为标题,例如:

在此处输入图片说明 我如何告诉 Symfony 表单在所有实体选项之前,我想插入一个禁用的选项作为标题?

设置'placeholder' => 'Subscriptions'不起作用。

我也尝试使用子数组,如:

               'choices' => array(
                'Subscriptions' => $this->userRepository->getCreatorsSubscribedToByUser($this->userProvider->getCurrentUser()),
                ),

但是“订阅”以斜体和粗体显示,这对我的前端人员来说不合适,因为它与 CSS 的其余部分不一致。

雅各布·马查克

你想要的是<optgroup>在 HTML 中创建在 Symfony 中有两种方法可以实现这一点。

一种方法是准备足够的choices数组结构,例如:

'choices' => [
    'Subscriptions' => [
         1 => 'magik',
         // other subscribtions
    ]
],

但是您使用存储库来获得选择,所以最好使用group_byoption

最简单的解决方案是:

'group_by' => function($choiceValue, $key, $value) {
    return 'Subscriptions';
},

您只提到了一组,因此您应该始终返回相同的值。如果你想要更多的组,它应该根据给定的参数返回所需的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony 4 中的注解

来自分类Dev

在 symfony 4 中存储文件

来自分类Dev

Symfony Forms注入对象

来自分类Dev

在Symfony 4中添加引导程序

来自分类Dev

Symfony Forms-在标签中显示表单详细信息

来自分类Dev

从Symfony 4中的树枝模板调用服务

来自分类Dev

Symfony 4:从实体中删除集合

来自分类Dev

Symfony 5(螺栓4)中的用户列表

来自分类Dev

在 Symfony 4 中获取 UserPasswordEncoder 实例

来自分类Dev

如何防止 Symfony 4 中的 ParseError?

来自分类Dev

如何替换 Symfony 4 函数中的变量?

来自分类Dev

树枝中的 Symfony4 翻译

来自分类Dev

如何在 Symfony 4 中概括 ApiKeyAuthenticator?

来自分类Dev

PersistentCollection 中的 Symfony4 搜索

来自分类Dev

Symfony 2-创建表单后,将选项添加到“选择”字段中

来自分类Dev

在Symfony 2 Type中禁用对选择字段的后端验证

来自分类Dev

Symfony2 Forms GET提交字段类型-删除“名称”参数

来自分类Dev

显示元素如果使用 Angular 4 和 Reactive Forms 选择了正确的选项

来自分类Dev

Symfony 4 DateType已被jquery禁用,但未提交数据

来自分类Dev

Symfony 4 类型:选项“0”不存在

来自分类Dev

在Symfony FormBuilder中添加类以选择选项

来自分类Dev

Symfony 4 - 如何使用 Javascript 删除树枝上的选择?

来自分类Dev

Symfony 4删除Cookie

来自分类Dev

Symfony 4 翻译

来自分类Dev

Symfony 4 条路线

来自分类Dev

Symfony 4 模态形式

来自分类Dev

Symfony 4,添加类型作为表单集合类型

来自分类Dev

在 Symfony 4 中访问 ExceptionListener 中的记录器

来自分类Dev

如何从 Symfony 4 中的数组在实体中创建新条目?