如何检查默认类型框

问题描述 投票:0回答:1
`->add('raw_roles', ChoiceType::class, [
            'label' => 'User access',
            'multiple' => true,
            'expanded' => true,
            'choices' => [
                'PMTool' => 'ROLE_USER',
                'SPOC' => 'ROLE_SPOC_USER',
                'Debug' => 'ROLE_SOAP_USER',
            ],
        ])`

如何默认检查 PMTool 复选框,我也不希望在修改现有用户时覆盖数据。

`->add('raw_roles', ChoiceType::class, [
            'label' => 'User access',
            'multiple' => true,
            'expanded' => true,
            'choices' => [
                'PMTool' => 'ROLE_USER',
                'SPOC' => 'ROLE_SPOC_USER',
                'Debug' => 'ROLE_SOAP_USER',
            ],
            data => ['ROLE_USER'],
        ])`

我尝试过这个,但是当我修改现有用户时,它会被自动检查,并且如果不取消选中它就不会被保存。

php forms symfony-forms symfony5
1个回答
0
投票

回调返回

['ROLE_USER']
默认选中“PMTool”复选框。否则,我们返回一个空数组
[]
以使复选框保持未选中状态。 (文档

->add('raw_roles', ChoiceType::class, [
    'label' => 'User access',
    'multiple' => true,
    'expanded' => true,
    'choices' => [
        'PMTool' => 'ROLE_USER',
        'SPOC' => 'ROLE_SPOC_USER',
        'Debug' => 'ROLE_SOAP_USER',
    ],
    'data' => function ($value, $user) {
        // Check if the user already has the 'ROLE_USER' (PMTool) role
        if (in_array('ROLE_USER', $user->getRoles())) {
            return ['ROLE_USER'];
        } else {
            return [];
        }
    },
])
© www.soinside.com 2019 - 2024. All rights reserved.