Symfony2自定义表单、替换属性、值和主题


Symfony2 Custom Form, Replace Attribute, Value and Theme

我是Symfony的新手。我已经阅读了Symfony的手册,并在网上搜索了一下,但仍然找不到这个问题的例子。

这是"new.html.trick">

{% block content %}
{% form_theme form _self %}
{% block _sifo_schoolbundle_mstperiode_nama_widget %}
<div class="form-group">    
    <div class="col-sm-10">
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </div>
</div>
{% endblock %}
 {{ form_widget(form) }}
                   </div>
              </section>
{% endblock %}

这就是结果:

<div class="form-group">    
    <div class="col-sm-10">     
        <div id="sifo_schoolbundle_mstperiode">
            <div>
                <label for="sifo_schoolbundle_mstperiode_nama" class="required">Nama</label>
                <div class="form-group">
                    <div class="col-sm-10">
                        <input type="text" id="sifo_schoolbundle_mstperiode_nama" name="sifo_schoolbundle_mstperiode[nama]" required="required" maxlength="50" />
                    </div>
                </div>
            </div>
            <div>
                <label for="sifo_schoolbundle_mstperiode_keterangan">Keterangan</label>
                <input type="text" id="sifo_schoolbundle_mstperiode_keterangan" name="sifo_schoolbundle_mstperiode[keterangan]" maxlength="250" />
            </div>
            <div>
                <label for="sifo_schoolbundle_mstperiode_aktif">Aktif</label>
                <input type="checkbox" id="sifo_schoolbundle_mstperiode_aktif" name="sifo_schoolbundle_mstperiode[aktif]" value="1" />
            </div>
    </div>
</div>

我想把它做成这样:

<div class="form-group">
    <label for="sifo_schoolbundle_mstperiode_nama" class="col-sm-2 col-sm-2 control-label">Default Here</label>
    <div class="col-sm-10">
       <input type="text" id="sifo_schoolbundle_mstperiode_nama" name="sifo_schoolbundle_mstperiode[nama]" required="required" maxlength="50" class="form-control" />
    </div>
</div>
<div>
    <label for="sifo_schoolbundle_mstperiode_keterangan">Keterangan</label>
    <input type="text" id="sifo_schoolbundle_mstperiode_keterangan" name="sifo_schoolbundle_mstperiode[keterangan]" maxlength="250" />
</div>
div>
    <label for="sifo_schoolbundle_mstperiode_aktif">Aktif</label>
    <input type="checkbox" id="sifo_schoolbundle_mstperiode_aktif" name="sifo_schoolbundle_mstperiode[aktif]" value="1" />
</div>

结论:

  1. 如何在我的<div class="form-group"></div>内部但在<div class="col-sm-10"><div>外部制作标签<label for="sifo_schoolbundle_mstperiode_nama" class="col-sm-2 col-sm-2 control-label">Default Here</label>
  2. 如何将<label for="sifo_schoolbundle_mstperiode_nama" class="required">Nama</label>中的类和值替换为此<label for="sifo_schoolbundle_mstperiode_nama" class="col-sm-2 col-sm-2 control-label">Default Here</label>
  3. 如何在<input type="text" id="sifo_schoolbundle_mstperiode_nama" name="sifo_schoolbundle_mstperiode[nama]" required="required" maxlength="50" />中添加类

Symfony使用以下块进行渲染https://github.com/symfony/symfony/blob/master/src/Symfony/Bridge/Twig/Resources/views/Form/form_div_layout.html.twig

所以你应该定义

{% block form_row %}
<div class="form-group">
  {% form_label(form) %}
  <div class="col-sm-10">
    {% form_widget(form) %}
    {% form_errors(form) %}
  </div>
</div>
{% endblock %}

等等,以满足您的HTML。

或者尝试使用任何现有的symfony引导程序捆绑包。例如,这个https://github.com/braincrafted/bootstrap-bundle