【问题标题】:Create a multicolor selectbox on Symfony2在 Symfony2 上创建一个多色选择框
【发布时间】:2012-11-24 17:52:24
【问题描述】:

我尝试创建以下字段:

<select name="test">
    <option value="1">a</option>
    <option value="2">b</option>
    <option value="3" style="font-weight: bold; color: red;">c *</option>
    <option value="4">d</option>
    <option value="5">e</option>
</select>

这将创建一个 2 色选择框:

但在 Symfony2 中,我不知道如何将类应用于单个选项。

如果在我看来我这样做:

{{
    form_widget(myForm.test, {
        'attr': {
            'class': 'red',
        }
    }) 
}}

或者如果在我的表格中我这样做:

    $builder->add('test', 'choice', array(
            'required' => true,
            'choices' => array('a', 'b', 'c *', 'd', 'e'),
            'attr' => array('class' => 'red'),
    ));

该属性存储在&lt;select&gt; 标记中并应用于整个可选值。

编辑

我使用 jQuery 解决了这个问题:

1) 我认为:

{{
    form_widget(myForm.test, {
        'attr': {
            'class': 'starred-select',
        }
    }) 
}}

2) 在我的 javascripts 中,我输入了:

    $('.starred-select option').each(function() {
        if ($(this).text().substr(-2) == ' *') {
            $(this).addClass('red');
        }
    });

当然,我的价值观不能以一颗星来结束。

如何将类应用到 Symfony2 中的 &lt;option&gt; 标签?

【问题讨论】:

  • 请注意,并非所有渲染引擎都支持选项元素的样式。 Webkit 没有。

标签: php css symfony drop-down-menu


【解决方案1】:

您必须覆盖小部件选择字段的呈现方式。

Form Theming 允许您自定义表单的每个部分。甚至 base form blocks 也可以被覆盖。

最好的方法是从form_div_layout.html.twig复制默认块 (在您的情况下,您必须覆盖 widget_choice_options 块)

您还可以在应用程序的different levels 处自定义您的块。深入了解the documentation,它包含完整解释的示例。

【讨论】:

  • 看起来不错但是有点hmmm,怎么说呢,只是为&lt;option&gt;添加属性是一项艰巨的工作...
  • 并不难,文档包含许多用例和示例。您只需覆盖一部分(取决于您的需要)。继承还可以帮助您保持代码简洁明了。
猜你喜欢
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-12
  • 1970-01-01
相关资源
最近更新 更多