forms - bool 值和选择 symfony 类型

标签 forms symfony choice

使用 Symfony 框架的选择类型,我们可以决定使用这两个键来显示列表、单选按钮或复选框:

'multiple' => false,
'expanded' => true,  //example for radio buttons

假设在 'choices' 键中作为数组给出的不同选择的值不是字符串,而是 bool 值:
$builder->add('myproperty', 'choice', array(
    'choices' => array(
        'Yes' => true,
        'No' => false
     ),
     'label' => 'My Property',
     'required' => true,
     'empty_value' => false,
     'choices_as_values' => true
 )); 

使用列表(选择)来显示不同的选择是没有问题的,当显示表单时,列表中的正确选择被选中。

如果我添加我之前谈到的两个键(多个和扩展)以用单选按钮替换列表,则我的字段没有选定的按钮(尽管它与选择一起使用)。

有人知道为什么吗?

如何轻松使其工作?

谢谢

注意:事实上,我认为它不适用于任何 then 值,因为值是 bool 值并最终成为字符串,但由于它适用于列表,我想知道为什么它不适用于其他人。

最佳答案

我添加了一个数据转换器;

$builder->add('myproperty', 'choice', array(
    'choices' => array(
        'Yes' => '1',
        'No' => '0'
     ),
     'label' => 'My Property',
     'required' => true,
     'empty_value' => false,
     'choices_as_values' => true
 )); 

 $builder->get('myProperty')
    ->addModelTransformer(new CallbackTransformer(
        function ($property) {
            return (string) $property;
        },
        function ($property) {
            return (bool) $property;
        }
  ));

这很神奇:现在我检查了正确的单选按钮并在实体中设置了正确的值。

关于forms - bool 值和选择 symfony 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39272733/

相关文章:

javascript - 为什么我的表单发布函数会打开我的 .pl 文件而不是执行它?

ruby-on-rails - 不允许用户在 ruby​​ on rails 中提交带有空字段的表单

php - PHP 表单提交时自动跳转到 HTML anchor

php - 用实际值替换常量 Symfony

mysql - 更新实体时出错 - Symfony 3

symfony - Symfony 2 中多个帐户的 swiftmailer 配置

javascript - 如何将JavaScript验证添加到选择字段并检查有效选项?

html - 使用http获取html表单数据

python - 如何导入列表? ( python )

c++ - 无论选择什么选项,函数 "void sub(int Subtraction)"都保持打印