【问题标题】:Symfony 4 : choiceType doesn't show choice_value correctlySymfony 4:choiceType 没有正确显示choice_value
【发布时间】:2021-12-28 12:15:23
【问题描述】:

我是 Symfony 的新手,我想使用 choiceType 构建一个选择选项。

所以我将此代码添加到buildForm 方法:

$builder->add('applications', ChoiceType::class, [
  'choices' => [
    '-- Choisir --' => NULL,
    'Admin' => '2',
    'Super' => '1',
    'visiteur' => '10',
    'admin local' => '98',
    'partenaire gestionnaire' => '16',
    'admin national' => '15',
    'soutien' => '11',
    'exploitant' => '12',
    'moe' => '99',
  ]
]);

但是当我检查 HTML 代码时,我没有正确的数字:

<select id="user_applications" name="user[applications]" class="form-control">
  <option value="0" selected="selected">-- Choisir --</option>
  <option value="1">Admin</option>
  <option value="2">Super</option>
  <option value="3">visiteur</option>
  <option value="4">admin local</option>
  <option value="5">partenaire gestionnaire</option>
  <option value="6">admin national</option>
  <option value="7">soutien</option>
  <option value="8">exploitant</option>
  <option value="9">moe</option>
</select>

【问题讨论】:

  • 你有几种解决方案:要么使用'null'作为字符串,在控制器中,你可以按照自己的意愿检索它,或者使用'--Choisir--'作为占位符

标签: php symfony symfony4 symfony-forms


【解决方案1】:

为 Le Professionnel 的回答添加一些上下文:如果您查看 ChoiceType 文档,您可以看到该类型允许您定义自定义占位符。尝试将您的代码更改为:

$builder->add('applications', ChoiceType::class, [
    'placeholder' => '-- Choisir --',
    'choices' => [
        'Admin' => '2',
        'Super' => '1',
        'visiteur' => '10',
        'admin local' => '98',
        'partenaire gestionnaire' => '16',
        'admin national' => '15',
        'soutien' => '11',
        'exploitant' => '12',
        'moe' => '99',
    ]
])

【讨论】:

    【解决方案2】:

    需要去掉'-- Choisir --' => NULL,换成别的值,不能使用空值。

    如果一个值为 null 或类似的值,symfony 将所有值替换为整数

    最佳做法是在您的情况下使用占位符属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-02
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      • 2018-07-28
      • 2010-12-09
      • 2020-03-01
      • 1970-01-01
      相关资源
      最近更新 更多