【问题标题】:Select with optgroup in Symfony 2.0在 Symfony 2.0 中使用 optgroup 进行选择
【发布时间】:2012-09-03 08:28:25
【问题描述】:

Symfony2 中,select html 组件被呈现为 ChoiceType 对象,它实际上也用于 checkboxesradiobuttons

有人真的知道如何在 Symfony2 中使用 optgroup 选项呈现选择

为了完整起见,这里我报告一个带有 optgroup 标签的 select 示例(示例来自w3cschools):

<select>
  <optgroup label="Swedish Cars">
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
  </optgroup>
  <optgroup label="German Cars">
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </optgroup>
</select> 

此外,请注意有一个类似的帖子here,但答案并不令人信服。

【问题讨论】:

  • 似乎在 sf2.1 (see the doc) 中已修复。你用的是 sf2.0 还是 sf2.1?
  • SF2.0!但是SF2.1现在在RC2!所以,还是等第一个 2.1 稳定版发布吧……我应该取消这个问题吗?
  • 不,不要关闭,在 sf2.0 上可能有一种解决方法,但我不知道。
  • 老实说,我不知道我是否会迁移到 Symfony2.1。不知道移植项目和插件需要付出多少努力!

标签: php forms symfony html-select optgroup


【解决方案1】:

这样做:

$car_choices = array(
    'Swedish Cars' => array(
        'volvo' => 'Volvo',
        'saab' => 'Saab',
    ),
    'German Cars' => array(
        'mercedes' => 'Mercedes',
        'audi' => 'Audi'
    )
);

$form = $this->createFormBuilder()
        ->add('car', 'choice', array(
            'label' => 'Choose your car',
            'choices' => $car_choices,
            ))
        ->getForm();

适用于 Symfony 2.0.x

【讨论】:

  • 很像 symfony 1.x 中的:array of array。
  • 完美!使用实体的绝佳选择。
【解决方案2】:

这取决于您的实体是如何定义的以及您如何对您的实体进行分组。假设分组是在给定对象中的一个参数的情况下完成的,比如说“品牌”。你可以这样做:

$builder->add('cars', null, array(
  'group_by'=> 'brand'
));

【讨论】:

  • 自引用怎么样。像类别和子类别?
  • @Daskul 对不起,我不明白你的意思。
  • 自引用关系。您有一个实体引用了与其父实体相同的实体类型。喜欢类别。我希望我的所有类别都在一个数据库表中,但仍然能够创建层次结构。前任。我将创建计算机、笔记本电脑、台式机类别,但我希望笔记本电脑和台式机在计算机类别下
  • 我会说这是不可能的。主要是因为HTML中不允许嵌套&lt;optgroup&gt;元素(见developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup“注意:Optgroup元素不能嵌套。”)
猜你喜欢
  • 1970-01-01
  • 2011-01-13
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 1970-01-01
  • 2016-12-27
相关资源
最近更新 更多