Symfony 多次渲染同一个表单

2024-01-21

我想多次渲染同一个表单为两个不同的选项卡处理相同的操作。 问题是,当我尝试时,仅显示第一个选项卡的形式,如果我更改id and name的形式。我发现这是 symfony 的预期行为,但我仍然需要它才能工作。

我发现它可能适用于集合,但不知道它是如何工作的。

twig:

{{ form(contactForm, {'attr': {'id': 'contactFormId' ~ Client.Id}, 'name': "contactFormName" ~ Client.Id})}}

Form:

$this->contactForm = $this->createFormBuilder($contact, array('allow_extra_fields' =>true))
->add('Nom',        TextType::class, array('mapped'=>false))
->add('Prenom',     TextType::class, array('mapped'=>false))
->add('Telephone',  TextType::class, array(
    'label' => 'Téléphone'))
->add('Email',      TextType::class)
->add('Ajouter',    SubmitType::class)
->getForm();

这是一个较旧的问题,但我刚刚遇到类似的情况。我想在列表视图中拥有一个表单对象的多个版本。对我来说,解决方案是移动createView()在视图中调用表单对象,而不是在控制器中调用它。关于关注点分离,这是一种肮脏的解决方案,但我想将其发布,这样无论如何它都可以帮助其他人。

我的控制器操作如下所示:

/**
 * @Route("", name="cart_show")
 * @Method("GET")
 */
public function showAction(Request $request)
{

    /** @var CartInterface $cart */
    $cart = $this->get('rodacker.cart');

    $deleteForm = $this->createDeleteForm();

    return $this->render(
        'AppBundle:Cart:show.html.twig',
        ['cart' => $cart, 'deleteForm' => $deleteForm]
    );

    // ...
    private function createDeleteForm()
    {
        return $this->createForm(
            OrderItemDeleteType::class,
            null,
            [
                'action' => $this->generateUrl('cart_remove_item'),
                'method' => 'DELETE',
            ]
        );
    }
}

在视图中我设置了form变量通过调用createView表单变量上的函数 (deleteForm)从控制器传递:

{% for item in items %}
    {% set form =  deleteForm.createView %}
    {{ form_start(form) }}
    {{ form_widget(form.item, {'value': item.image.filename}) }}
    <button type="submit" class="btn btn-xs btn-danger" title="Artikel entfernen">
        <i class="fa fa-trash-o"></i> entfernen
    </button>
    {{ form_end(form) }}
{% endfor %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony 多次渲染同一个表单 的相关文章

随机推荐

  • 使用 Rails 和 Devise 进行功能测试。我的灯具中应该放什么?

    您好 我想对使用 Devise 和 CanCan 的 Rails 3 应用程序进行一些功能测试 在我的用户模型中 我有用户年龄 我想测试用户只能访问特定页面 如果他们是 登录 Over 35 我在 Devise 文档中看到我可以使用 sig
  • 如何在 iTunes Connect 中选择版本?

    通常会有一个 按钮 但我现在看不到 因为 Apple 更新了 iTunes Connect 并引入了一个错误 我怎样才能解决这个错误并选择一个版本来将我的应用程序提交到应用程序商店 我一小时前刚刚提交了一些更新 没有错误 通过 Xcode
  • C#设置环境变量

    我在使用 C 设置环境变量时遇到问题 在某些情况下我需要修改一些环境变量 例如我需要修改 NDSRC 变量 I use Environment SetEnvironmentVariable MY VARIABLE value Environ
  • 在 QTreeView 中设置粗体行

    我在 pyqt 应用程序中有一个 QTreeView 的自定义子类 我试图让用户能够突出显示和 低亮 由于缺乏更好的术语 行 突出显示的行应具有粗体文本和 可选 不同的背景颜色 有任何想法吗 我正在考虑将样式表作为一种选择 但到目前为止还无
  • 为什么我需要一个无参数构造函数才能在 CDI 中使用具有构造函数注入的 ApplicationScoped beans?

    我正在尝试将构造函数注入模式应用于 CDI 应用程序中的 bean 但遇到以下错误消息 15 18 11 852 ERROR izone adams webapp error IzoneExceptionHandler default ta
  • Spring Boot - 从 2.2.5 升级到 2.3.0 后验证停止工作

    我已将 Spring Boot 项目从 2 2 5 迁移到 2 3 0 之后 验证停止工作 根本不调用它们 我在变更日志文档中读到 https github com spring projects spring boot wiki Spri
  • 阻止软件包安装到 conda 基本环境

    我目前正在使用 miniconda 我想阻止我自己和我的机器的其他用户将任何东西安装到base环境 这是因为我希望用户创建虚拟环境并在那里安装东西 我也不希望我的基础环境变得臃肿 有办法做到这一点吗 我同时使用 conda 和 pip 所以
  • 从DataTable中获取值

    我想从 DataTable 中获取所有列值并将其存储到 ListBox 中 这是我的代码 If myTableData Rows Count gt 0 Then For i As Integer 0 To myTableData Rows
  • navigation.navigate('Home') 在打字稿中显示一些错误

    当我使用 useNavigation 或 props navigation 使用 navigation navigate Home 在屏幕之间导航时 打字稿返回错误 Argument of type Main is not allocate
  • 自定义请求标头未与 JavaScript 提取请求一起发送

    我正在尝试使用 JavaScriptFetch 用于将 AJAX 请求发送到我的 PHP OAuth 服务器的 API 我的问题是我需要发送请求标头Authorization with Bearer eyJ0eXAiOiJKV1QiLCJh
  • WPF Datepicker 使用 MVVM 返回先前选择的日期

    我正在开发一个 WPF 项目 其中窗口上有一个 Datepicker 控件 我使用 MVVM 模式进行数据绑定 我已经在日期选择器的 SelectedDate 更改事件上设置了一个命令 问题是 例如 当我第一次更改我得到的日期时NULL在命
  • 通过 Rest API 以 csv 格式导出 PowerBI 报告

    PowerBI 仅为分页报表提供了 CSV 格式导出 API 不适用于通过导出 API 仅支持 pbix ppt png 格式的普通报表 参考 https learn microsoft com en us rest api power b
  • 无法使用 Node.js 连接到 Apache ActiveMQ

    背景 尝试使用 AMQP 1 0 协议通过以下方式连接到我的 Apache ActiveMQ 代理amqp10 https www npmjs com package amqp10 我使用以下代码 改编自自述文件中的原始示例 const A
  • pyplot savefig 分配太多块

    我试图绘制一个包含数百万个三角形的图形 但 matplotlib 似乎无法处理它 当我尝试使用保存图形时savefig file png dpi 100 我收到以下错误 OverflowError Allocated too many bl
  • 使用 Command-Click 声明时,Xcode 11 (11A420a) 不显示“嵌入 H/VStack”菜单项

    我一直在使用 SwiftUI 我注意到所有这些教程都提到了 Command ClickText例如 并期望出现以下菜单项 以便嵌入HStack例如 问题是我没有看到这些 嵌入H VStack出现菜单项 即使我搜索 嵌入 它也不会返回任何内容
  • 重复事件、SQL 查询

    我知道有关重复事件的问题很常见 但除了与日历应用程序有关的事件之外 我还无法找到有关重复事件的特定问题的答案 主要区别在于我们应用程序中的事件 只能在报告中或单独出现 而不是以日历格式出现 尽管它们在很多方面非常相似 也许只是与日历相关的包
  • 如何在sql server中执行另一个存储过程中的存储过程

    我正在 sql server 2008 上工作 我有一个存储过程 在其中我正在执行另一个 usp 这里我想获取第二个usp的输出并相应地返回主usp输出参数 但我的主要 USP 总是返回第二个 USP 值和主要 USP 值 但我只想返回主要
  • Python subprocess.Popen 作为 Windows 上的不同用户

    在 Windows 上的 Python 中以不同用户身份启动子进程的最佳方式是什么 最好是 XP 及更高版本 但如果它只能在 Vista 和 7 上运行 我也可以接受 我不确定你是否可以使用标准 python 库来做到这一点 但是 那pyw
  • 打印 Python 函数参数的名称和值

    我想做一个debug print 它将输出调用者变量和值 稍后我会将其扩展为仅部分打印列表和字典等 这篇文章仅关注打印调用者变量和值的第一部分 这篇文章有以下几个部分 当前版本debug print 构建的测试用例 测试用例的输出 我想要的
  • Symfony 多次渲染同一个表单

    我想多次渲染同一个表单为两个不同的选项卡处理相同的操作 问题是 当我尝试时 仅显示第一个选项卡的形式 如果我更改id and name的形式 我发现这是 symfony 的预期行为 但我仍然需要它才能工作 我发现它可能适用于集合 但不知道它