2012-12-06 80 views
0

多色選擇框我嘗試創建以下字段:創建於Symfony2的

<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色選擇框:

enter image description here

但在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'), 
    )); 

屬性被存儲到<select>標籤,並適用於整個可選值。在我看來)

1我把:

編輯

我解決了使用jQuery的問題在我的JavaScript

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

2),我把:

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

當然,我的價值觀不可能由明星完成。

如何將一個類應用於Symfony2中的<option>標記?

+0

就這麼你知道,並非所有的渲染引擎都支持選項元素的樣式。 Webkit沒有。 –

回答

2

您必須重寫您的窗口小部件選擇字段的呈現方式。

Form Theming允許您自定義表單的每個部分。即使base form blocks可以被覆蓋。

做到這一點,最好的方法是複製從form_div_layout.html.twig 默認塊(在你的情況已經覆蓋widget_choice_options塊)

你也可以在你的應用程序的different levels自定義塊。請深入瞭解the documentation,它包含完整的解釋示例。

+0

看起來不錯,但有點嗯,怎麼說,一個艱難的工作只是添加屬性到'

+0

不難,文檔包含許多用例和示例。您只需重寫一個部分(取決於您的需求)。繼承還可以幫助您保持代碼清晰和簡單。 –