使用 Symfony2(.7) 减少 Twig 中的表单组布局

2024-03-08

我试图摆脱 symfony2 表单中 twig 中的重复布局 目前我的布局看起来像:

<form name="step2" method="post" action="" class="productForm">
    <h2>Step2:</h2>

    <div id="step2">
        <div class="form-group">
            <div class="form-widget">
                <div id="step2_client1">
                    <div class="form-group"><label class="control-label required" for="step2_client1_clientTitle">Client 1 title:</label>

                        <div class="form-widget"><select id="step2_client1_clientTitle" name="step2[client1][clientTitle]" class="form-control">
                            <option value="Mr">Mr</option>
                            <option value="Mrs">Mrs</option>
                            <option value="Miss">Miss</option>
                            <option value="Ms">Ms</option>
                            <option value="Dr">Dr</option>
                            <option value="Sir">Sir</option>
                        </select></div>
                    </div>
                    <div class="form-group"><label class="control-label required" for="step2_client1_firstName">Client 1 first name:</label>

                        <div class="form-widget"><input type="text" id="step2_client1_firstName" name="step2[client1][firstName]" required="required" class="form-control">
                        </div>
                    </div>
                    <div class="form-group"><label class="control-label required" for="step2_client1_surname">Client 1 last name:</label>

                        <div class="form-widget"><input type="text" id="step2_client1_surname" name="step2[client1][surname]" required="required" class="form-control"></div>
                    </div>
                </div>
            </div>
        </div>
        
        ...
        
        <div class="form-group form-group-submit">
            <div class=""><a id="step2_save" class="has-spinner btn btn-default btn-submit"><span class="spinner"><i class="fa fa-spinner fa-spin"></i></span>Complete the quote
            </a></div>
        </div>
        <input type="hidden" id="step2__token" name="step2[_token]" class="form-control" value="xxx"></div>
</form>

我有一个脏的 js 脚本来按照我希望它显示的方式修复我的布局,但正如所说的那样,这是脏的。所以我想知道是否有人可以帮助我更改我的 twig 文件,以仅显示子元素的 form-group 和 form-widget css 类,而不是父元素。

肮脏的js脚本:

$('.form-group').each(function(e){
    if($(this).parents('.form-group').length) {
        var $realGroup = $(this).parents('.form-group');
        $realGroup.toggleClass('form-group');
        $realGroup.children('.form-widget').toggleClass('form-widget');
    }
});

还有树枝:

{% block form_row -%}
    {% spaceless %}
    <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
        {{ form_label(form) }}
        <div class="form-widget">
            {{ form_widget(form) }}
            {{ form_errors(form) }}
        </div>
    </div>
    {% endspaceless %}
{%- endblock form_row %}

现在,twig 位是标准的 SF2 bootstrap 表单布局,我很确定我没有改变它。

因此,任何摆脱 js 脚本并实际在 twig 中执行的帮助都会很棒,我尝试了一些方法,但每一项结果都比我用 js 所做的更糟糕,所以我有点卡住了。

EDIT:

js 脚本所做的只是删除 css 类,这样布局就可以工作了。它看起来很平,因为它只是空的 div,但我所追求的并不是首先显示 div。我正在尝试更改 twig 脚本,而不是 css,因为这正是我们想要的方式。


你有三个选择。

1.手动创建每个字段:

{{ form_start(form, {'action': path(''), 'attr': {'class':'productForm'}}) }}
    {{ form_errors(form) }}

<div class="form-group">
    {{ form_label(form.clientTitle, 'Client 1 title:', {'label_attr': {'class': 'control-label required'}}) }}
    <div class="form-widget">
        {{ form_widget(form.clientTitle, { 'attr': {'class': 'form-control' }}) }}
    </div>
    {{ form_errors(form.clientTitle) }}
</div>

<div class="form-group">
    {{ form_label(form.firstName, 'Client 1 first name:', {'label_attr': {'class': 'control-label required'}}) }}
    <div class="form-widget">
        {{ form_widget(form.firstName, { 'attr': {'class': 'form-control' }}) }}
    </div>
    {{ form_errors(form.firstName) }}
</div>

<div class="form-group">
    {{ form_label(form.firstName, 'Client 1 last name:', {'label_attr': {'class': 'control-label required'}}) }}
    <div class="form-widget">
        {{ form_widget(form.firstName, { 'attr': {'class': 'form-control' }}) }}
    </div>
    {{ form_errors(form.firstName) }}
</div>


<div class="form-group form-group-submit">
    <div class="">
        <a id="step2_save" class="has-spinner btn btn-default btn-submit">
            <span class="spinner">
                <i class="fa fa-spinner fa-spin"></i>
            </span>
            Complete the quote
        </a>
    </div>
</div>

{{ form_end(change_password) }}

2.或者您可以创建自己的形式主题 http://symfony.com/doc/current/cookbook/form/form_customization.html#what-are-form-themes.

3.或者对每个表单使用一个循环:

{% for child in form.children %}

    <div class="form-group">
        {{ form_label(child, null, {'label_attr': {'class': 'control-label required'}}) }}
        <div class="form-widget">
        {{ form_widget(child, { 'attr': {'class': 'form-control' }}) }}
        </div>
        {{ form_errors(child) }}
    </div>

{% endfor %}

这完全取决于您未来的表单将有多少个字段以及您有多少个类似的表单。

然而,使用 JS 来做这样的事情是一个禁忌。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Symfony2(.7) 减少 Twig 中的表单组布局 的相关文章

  • 禁用 WooCommerce 手动/编辑订单的电子邮件通知

    需要 WooCommerce 专业知识 我需要禁用手动创建的订单的电子邮件通知 我必须使用处理状态 由于处理订单状态的自定义挂钩 我无法创建自定义状态 理想情况下 手动订单页面中可以勾选一个复选框 勾选后 它将禁止在每种状态下向客户发送电子
  • 如何将变量插入 PHP 数组?

    我在网上查了一些答案 但都不是很准确 我希望能够做到这一点 id result id info array id Example echo info 0 这有可能吗 您需要的是 不推荐 info array id Example varia
  • 更改 Woocommerce 中“我的帐户”页面上的标题

    我见过大量有关如何使用 WooCommerce 我的帐户仪表板重新排序 更改导航和页面的示例 但我一生都无法弄清楚如何更改每个部分的主要标题 我的帐户 订单 下载 地址等 我已经搜索过模板 但没有任何乐趣 我尝试使用条件 php 注释来回显
  • Laravel Auth:attempt() 不会持久登录

    我在网上找到了许多有类似问题的资源 但似乎没有一个解决方案可以解决我的问题 当我使用以下代码登录用户时 一切看起来都很好 email Input get email password Input get password if Auth a
  • 在 PHP 中包含 PHP 文件

    我有一个网站 它运行 PHP if 语句来根据附加文件的类型 即 Jpg Txt MP4 显示内容 所以我显示 TXT 文件的代码是 if post attachment txt display attachment div class d
  • 防止 Propel 插入空字符串

    当未设置列时 如何防止 Propel ORM 插入空字符串 CREATE TABLE user uid INTEGER PRIMARY KEY AUTO INCREMENT email VARCHAR 255 NOT NULL UNIQUE
  • 简单的 PHP 回显代码不起作用

    这是我的 html 和 php 脚本 h1 Bob s Auto Parts h1 table width 100 tr tr table 为什么这个输出会出现一个 gt 我希望它是 这有效 仅有的 这是输出 鲍勃的汽车零件 鲍勃
  • 使用 PHP Selenium Webdriver 单击下拉菜单中的选项?

    我正在使用 PHP Selenium Webdriver 包装器Facebook https github com facebook php webdriver 任何人都可以给我一个如何单击或从选择下拉菜单中选择选项的示例吗 我已经尝试过这
  • 编辑 HTACCESS 文件以防止直接访问特定文件夹中的特定文件

    我试图阻止直接访问子文件夹中的特定文件 我意识到这个论坛上有很多描述类似问题的主题 但是 我的似乎有点尴尬 由于我已经存在 HTACCESS 文件 这是文件的文件路径 www example com PRINCIPAL PROJECTS m
  • 如何防止在 PHP 中使用超出“使用”范围的特征方法

    我想知道是否有任何方法可以防止在 PHP 的任何类上下文之外使用特征方法 让我用一个简短的例子来解释我想要什么 这是我当前的代码 File MyFunctions php trait MyFunctions function hello w
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 如何在多次尝试后延迟登录尝试 (PHP)

    我正在开发一个用 PHP 构建的相当大的网站 该网站可能会有很多用户 我正在寻找一种方法来保护登录屏幕免受自动尝试的影响 我已经在注册表中添加了验证码检查 但还想进一步强化网站 据我所知 StackOverflow 上也有类似的问题 而且我
  • 如何纠正这个非法字符串偏移?

    我收到此错误 警告 第 32 行 home mysite public html wp content themes evento lib php extra class php 中的非法字符串偏移 type 我意识到文件中的这部分代码是错
  • 对 SimpleXML 数据进行排序和分组

    我正在对 XML 文件中的出版物数据进行排序和分组 我目前使用的方法效果很好大部分情况下 尽管我觉得有一种更有效的方法来完成我想要完成的任务 以下是目标节点的示例
  • Codeigniter - 出现 404 Not Found 错误

    我们在 godaddy 有两个托管套餐 我们的实时网站使用以下 htaccess 文件运行良好 无需在 url 中使用 index php 即可访问网站 RewriteEngine On RewriteCond REQUEST FILENA
  • Stream_context_set_params 不适用于 ssh2.sftp 包装器

    我想使用类似的功能here http www php net manual en function stream notification callback php 请检查以下代码 function notify notification
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 从字符串中获取数字

    我有一个字符串 例如 lorem 110 ipusm 我想获取 110 我已经尝试过这个 preg match all 0 9 string ret 但这正在返回 Array 0 gt 1 1 gt 1 2 gt 0 我想要这样的东西 Ar
  • ZF3/2 - 如何捕获 EVENT_DISPATCH 侦听器中引发的异常?

    有什么方法可以在 EVENT DISPATCH 监听器中抛出异常吗 class Module public function onBootstrap EventInterface event application event gt get
  • 使用 crypt() 加密

    我目前正在做一个非常安全的登录系统 但我是 crypt 函数的新手 需要一些快速帮助 我在注册过程中使用 crypt 加密密码字符串并将其保存到数据库中 但是 我如何在登录过程中解密密钥 或者我应该怎么做 或者是否可以对提交的密码字符串进行

随机推荐

  • SQL Server - 向所有表添加默认约束

    有没有办法编写一个脚本来检查数据库中的每个表 寻找uniqueidentifier列名为ID 然后添加一个DEFAULT的约束NEWID 到列 如果DEFAULT约束不存在 根据OP的评论澄清进行编辑 该脚本创建一个DEFAULT的约束NE
  • 解决方案范围内的预构建活动?

    我在 Visual Studio 中有一个解决方案 其中包含多个项目 我想在每次构建的一开始就运行一个命令 无论涉及哪些项目以及它们是否是最新的 本质上 我需要类似于解决方案范围内的预构建事件的东西 但不幸的是 VS 似乎不支持这些 有谁知
  • Haskell:解析命令行参数

    这更多的是一个风格问题 而不是一个如何做的问题 所以我有一个需要两个命令行参数的程序 一个字符串和一个整数 我是这样实现的 main do args aString aInteger lt getArgs let parsed n read
  • 多列代表一个值时的频率表 (R)

    我有一个这样的数据集 ID color1 color2 color3 shape1 shape2 size 55 red blue NA circle triangle small 67 yellow NA NA triangle NA m
  • 数据库连接何时以及为何昂贵?

    我正在对数据库进行一些研究 并且正在研究关系数据库的一些局限性 我发现大表的连接非常昂贵 但我不完全确定为什么 DBMS需要做什么来执行连接操作 瓶颈在哪里 非规范化如何帮助克服这种费用 其他优化技术 例如索引 有何帮助 欢迎个人经历 如果
  • Eclipse 配置错误:无效的 Google App Engine 目录

    我在创建 Pydev Google App Engine 项目时遇到问题 配置在选择 Google App Engine 目录时停止 以下是我将目录指向 C Program Files Google google appengine 后遇到
  • Android Studio 2.2 不支持的方法异常

    我将我的 android studio 更新到了 2 2 现在 当我打开并运行以前的项目时 我收到错误 UnsupportedMethodException Unsupported method AndroidProject getPlug
  • Sntp.sync() 忽略服务器

    我一直在尝试与 ntp 服务器同步时间 但是 nodemcu 似乎忽略了服务器参数 sync lua sntp sync fr pool ntp org function tm rtctime epoch2cal rtctime get p
  • SCRIPT5009:“$”在 IE9 中未定义

    我有一个书签 它将 div 加载到当前页面并在其中放置一个 iframe 除了 IE9 之外 小书签在所有浏览器中都可以正常工作 甚至可以在早期版本的 IE 中使用 我正在使用以下书签框架 http idc anavallasuiza co
  • 如何隐藏 mkmapview monotouch iPhone 的合法链接

    MKMapview 在其右下角有合法链接 我想在这个地方添加一个按钮 该按钮具有某种透明度 我可以隐藏法律链接吗 或者 如果我以隐藏此链接的方式设置按钮 苹果可能会拒绝我的应用程序 我的地图视图中也有一些类型的子视图 尝试使用这个 但我不知
  • 使用 dbcontext 的正确方法(全局还是作为参数传递?)

    当我调用需要的方法时dbcontext for update or insert但只想要一个saveChange 喜欢关注 操作 登录 TempDBEntity context new TempDBEntity var temp conte
  • 如何从 PHP 中的 Base 64 字符串获取图像大小

    我正在获取图像字符串的基数 64 我必须移动文件夹并将图像路径存储在数据库中 但我必须限制文件大小 我该如何执行此操作 我从 Base 64 字符串生成图像的代码如下 if image is attached with request Im
  • 一个拼接语法类,匹配可选模式并绑定属性

    我的拼接语法类定义如下 语法类匹配两个语句 第一个模式 其中一个语句 第三个和第二个模式 的序列 甚至可能根本不匹配这些语句 最后一个模式 正如您所看到的 有相当多的 重复 代码 因为每个模式要么返回模式中捕获的某些内容的属性 要么返回空的
  • 开始在雪花上使用 liquibase

    我正在尝试在雪花上开始使用 liquibase 我想我已经差不多完成了 liquibase properties 文件 driver net snowflake client jdbc SnowflakeDriver classpath l
  • Jersey REST Web 服务、Tomcat、Eclipse 和 404

    我读了很多帖子 但似乎无法解决我的问题 您还会看到大量与此帖子非常相似的帖子 甚至是相同的教程 即使跟随他们 我似乎也无法得到答案 本质上 我正在尝试遵循以下简单教程 http www vogella com articles REST h
  • 使用 jTD 连接到 SQL Server 2012

    尝试使用 JDBC 连接到 SQL Server 2012 Express Edition 这是我的代码 import java sql public class MSSqlTestConnection public static void
  • 以最少的字符数表示长

    我需要用尽可能短的字符串来表示非常大和非常小的数字 这些数字是无符号的 我尝试过直接 Base64 编码 但对于一些较小的数字 编码的字符串比仅将数字存储为字符串要长 在 URL 安全的情况下 在尽可能短的字符串中以最佳方式存储非常大或非常
  • 将背景图像更改为按钮

    我正在尝试更改按钮的背景图像 但它没有像我想象的那样工作 CSS 没问题 如下 ITA float right margin 5px 85px width 40px height 40px background FFFFFF url ITA
  • 文件-通过本地文件路径上传

    有没有办法通过文件路径启用文件上传 默认 HTML 文件上传控件显示禁用的文本框和按钮 当用户将文件路径粘贴到文本框中时 是否可以通过 JS 或其他方式上传文件 该网页位于公司内部网内 不 这样的事情在使用普通 HTML JavaScrip
  • 使用 Symfony2(.7) 减少 Twig 中的表单组布局

    我试图摆脱 symfony2 表单中 twig 中的重复布局 目前我的布局看起来像