0

我使用 Symfony 1.4 和 Bootstrap。我在格式化复选框列表时遇到问题。每个复选框的文本都带有一个关于其复选框的换行符。

Symfony 为每个复选框生成这个 HTML 代码:

<li><input name="mensajes[receptores_list][]" type="checkbox" value="5" id="mensajes_receptores_list_5" /><label for="mensajes_receptores_list_5">Carlos (Admin)</label></li>

为了让 Bootstrap 正确显示每个复选框,我需要 Symfony 生成以下代码:

<label class="checkbox">
 <input name="mensajes[receptores_list][]" type="checkbox" value="5" id="mensajes_receptores_list_5" /> Carlos (Admin)
</label>

我怎么能得到这个?

4

2 回答 2

0

在您的表单类上:

$this->widgetSchema['receptores_list']->setAttribute('class', 'checkbox');

并尝试配置表单装饰器(sfWidgetFormSchemaFormatter)

于 2013-10-21T22:55:56.807 回答
0

我改变了解决问题的方法并决定使用 jQuery。我继续创建

<div id="checkbox_emisores"> 

然后 en _form.php 看起来像这样:

<div id="checkbox_emisores">
          <?php echo $form['receptores_list']->renderError() ?>
          <?php echo $form['receptores_list'] ?>
 </div>

这里的功能是将 Symfony 1.4 生成的复选框的标签替换为您需要 Bootstrap 的标签。我调整了函数,如下所示:

jQuery:一个简单的标签替换

$(document).ready(function(){

$.ajaxSetup ({
        cache: false       
    });
// First delete the label generated by symfony
  $("#checkbox_emisores").find('label').each(function(index) {
 var htmlStr = $(this).html();
 $(this).replaceWith(htmlStr);
 });  
//Then replace the symfony <li> with <label generated class='checkbox'> as needed in Bootstrap 
  $("#checkbox_emisores").find('li').each(function(index) {
var htmlStr = $(this).html();
$(this).replaceWith("<label class='checkbox'>"+htmlStr+"</label>");
});   
    });
于 2013-10-22T17:00:36.257 回答