【问题标题】:Two buttons in a row (Bootstrap form theme for Symfony2)连续两个按钮(Symfony2 的引导表单主题)
【发布时间】:2015-08-06 08:32:16
【问题描述】:

我正在使用the Bootstrap form theme for Symfony2 (bootstrap_3_horizo​​ntal_layout.html.twig):

我在表单上添加了两个按钮:

$builder
    // some code here ... 
    ->add('save', 'submit', ['label' => 'save'])
    ->add('cancel', 'submit', ['label' => 'cancel']);

它们以这种方式呈现:

我需要它们位于同一行:

如何实现?

【问题讨论】:

  • 可能需要改css。display: inline-block;

标签: twitter-bootstrap symfony twig symfony2-forms


【解决方案1】:

跟随

Symfony Best Practises: Add buttons in the templates, not in the form classes or the controllers.

例如:

{{ form_start(form) }}
  {{ form_widget(form) }}

  <div class="row">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" value="save" class="btn btn-primary">save</button>
      <button type="submit" value="cancel" class="btn btn-default">cancel</button>
    </div>
  </div>
{{ form_end(form) }}

【讨论】:

  • 仅在模板中添加按钮时,控制器是否仍然可以知道按下了哪个按钮? $form->get('save') 抛出 OutOfBoundsException 异常,$form->getData() 不再有信息。即:symfony.com/blog/new-in-symfony-2-3-buttons-support-in-forms
  • @Patrick 我知道你的问题,老实说,我自己也被它绊倒了好几次。最佳实践建议的目的是保持表单可重用,但上下文相关的按钮会破坏这种目的。如果您在控制器中仍然需要它们(这有时确实是有益的),您可以例如:a)扩展基本表单以仅添加所需的按钮,或 b)在创建表单对象后在控制器中添加按钮。
【解决方案2】:

只需在保存按钮左侧添加一个样式浮动。这对我有用:

    ->add('save', 'submit', ['label' => 'save', 'attr' => array('style' => 'float: left')])
    ->add('cancel', 'submit', ['label' => 'cancel']);

【讨论】:

  • 谢谢。你也使用 Bootstrap 主题吗?我已经尝试过了,但没有结果,因为引导程序内部 - 样式应用于按钮标记,但按钮本身位于
    标记中,即为每个按钮创建。
  • 我使用您发布的新闻链接中描述的表单主题,并制作了一个带有两个文本字段和两个按钮的简单表单。然后我在模板中渲染为{{ form(form) }} 并在我的页面中使用{% form_theme form 'bootstrap_3_layout.html.twig' %},每个按钮都进入&lt;div class="form-group"&gt;
  • 哦,对不起,我忘了通知我正在使用“bootstrap_horizo​​ntal_layout.html.twig”,您的食谱在其中不起作用,但与“bootstrap_layout.html”完美配合。树枝”
  • 应用于按钮时不起作用。您可以设置样式“display:inline-block;”到两个按钮或用左浮动 div 包裹它们。正如 Yoshi 下面建议的那样,最好在模板中定义提交按钮(但请记住,这只是建议)。在模板中,您可以更轻松地使用 html 元素的属性进行操作。
【解决方案3】:

您是否尝试将第二行与第一行放在同一行?

像这样:

->add('save', 'submit', ['label' => 'save']) ->add('cancel', 'submit', ['label' => 'cancel']);

【讨论】:

  • 这是一个php代码,在php中是否放在同一行无关紧要:)。
  • 对不起,我的错。如果您将它们添加到按钮组?这可能行得通。
  • 是的,我想我需要对它们进行分组,但我正在使用 Symfony2 的带有 Bootstrap 表单主题的 Symfony2 Form Bundle,我还不知道如何在这个 Bundle 中进行操作。
  • 这个答案让我很开心。谢谢!
猜你喜欢
相关资源
最近更新 更多
热门标签