加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Symfony 2.3如何在一个表单组中将按钮组合在一起?

发布时间:2021-08-28 03:47:20 所属栏目:大数据 来源: https://www.jb51.cc
导读:现在我有一个包含以下内容的FormType: $builder-add('name','text') -add('save','submit',array('label'='Save', 'attr'=array('class'='btn btn-primary'))) -add('reset','reset',array('label'='Reset Form', 'attr'=array('class'='btn btn-warning'))

现在我有一个包含以下内容的FormType:

$builder->add('name','text')
    ->add('save','submit',array('label'=>'Save', 'attr'=>array('class'=>'btn btn-primary')))
    ->add('reset','reset',array('label'=>'Reset Form', 'attr'=>array('class'=>'btn btn-warning')));

现在我有一些形式主题,将上面的内容呈现为:

<form method="post" action="">
    <input type="hidden" name="_csrf_token" value="*********" />
    <div class="form-group">
        <label class="col-4">Name</label>
        <input type="text" name="form[name]" value="" placeholder="Name" />
    </div>
    <div class="form-group">
        <input type="submit" name="form[save]" value="Save" class="btn btn-primary" />
    </div>
    <div class="form-group">
        <input type="reset" name="form[reset]" value="Reset" class="btn btn-warning" />
    </div>
</form>

但是我想要的输出是:

<form method="post" action="">
    <input type="hidden" name="_csrf_token" value="*********" />
    <div class="form-group">
        <label class="col-4">Name</label>
        <input type="text" name="form[name]" value="" placeholder="Name" />
    </div>
    <div class="form-group">
        <input type="submit" name="form[save]" value="Save" class="btn btn-primary" />
        <input type="reset" name="form[reset]" value="Reset" class="btn btn-warning" />
    </div>
</form>

请注意,按钮位于相同的表单组包装div中.我想知道是否有办法只使用FormType或编辑表单主题.我不想改变使用的视图:

{{ form(form,{'method':'POST','attr':{'class':'form-horizontal'} }) }}

我知道如果我以自定义方式从表单中渲染按钮,就可以实现这一点.

解决方法:

更新

一个解决这个问题的捆绑包基本上做了我的建议,但更好:
http://bootstrap.braincrafted.com/components.html#forms

这远非最优雅的方式来做到这一点,但我还没有找到任何其他方法来做到这一点.

我有一个工作的解决方案,涉及修改FormType一点,并覆盖form_div_layout.html.twig中的一些块

{# form_div_layout.html.twig #}

{% block button_row %}
{% spaceless %}
    {% if 'data-first-button' in attr %}
    <div class="form-group">
        <div class="col-12">
    {% endif %}
    {{ form_widget(form) }}
    {% if 'data-last-button' in attr %}
        </div>
    </div>
    {% endif %}
{% endspaceless %}
{% endblock button_row %}

{% block button_attributes %}
{% spaceless %}
    id="{{ id }}" name="{{ full_name }}"{% if disabled %} disabled="disabled"{% endif %}
    {% for attrname, attrvalue in attr %}{% if attrvalue != 'data-first-button' and attrvalue != 'data-last-button'%}{{ attrname }}="{{ attrvalue }}"{%endif%}{% endfor %}
{% endspaceless %}
{% endblock button_attributes %}

它的作用是在按钮上查找数据优先按钮和数据最后按钮属性,并为相应的按钮添加包含的div.然后在按钮属性块中,我们查找这些属性并忽略它们.然后在表单类型中我们只需将attr添加到右侧按钮,如下所示:

$builder->add('name','text')
   ->add('save','submit',array('label'=>'Save', 'attr'=>array('class'=>'btn btn-primary','data-first-button')))
   ->add('reset','reset',array('label'=>'Reset Form', 'attr'=>array('class'=>'btn btn-warning','data-last-button')));

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读