【问题标题】:How can I execute an INSERT query on Twig (symfony 3)?如何在 Twig (symfony 3) 上执行 INSERT 查询?
【发布时间】:2016-10-16 20:09:21
【问题描述】:

我想解决的问题是我想查看用户列表,然后我想在每个用户旁边有一个复选框来选择用户是否存在或是否存在。在 symfony(实际上是基本 HTML)上,我可以创建一个数组,而不是给我之前在表单上选择的那些 id,但是,我怎样才能将这些信息发送到数据库?因为我在视图上有这些数据(这是 symfony 上的一个 twig 文件)。

到目前为止,我只找到了这个如何从 twig https://www.snip2code.com/Snippet/591299/hackishly-using-SQL-in-Twig-templates-in 创建查询的示例,但它给了我一个错误,因为它无法识别“db”,所以我不能使用它。

那么,有没有办法将该数组发送到数据库? Twig 似乎限制了我的很多选择。谢谢

编辑:正确的方法(因为其他人将来会有这个菜鸟怀疑,就像我一样)是在表单的方法中(通过使用 html 而不是 twig 提供的更容易使其工作)调用方法从控制器而不是你想调用的,在那里你可以使用 $_GET 或 $_POST 获取数据,然后使用教义与数据库进行交互。

【问题讨论】:

  • 在您链接的脚本中强调 hackishly 一词。尝试执行 SELECT 已经够糟糕了,但是 INSERT 正在积极修改数据,这确实破坏了 Symfony 试图推广的架构。我建议更多地了解 Twig 的用途(它不应该做 SQL)。我怀疑你想要实现的目标甚至无法用 Twig 完成,因为 Twig 只为每个页面加载运行一次 - 如果你通过提交表单来执行此操作,你将需要 JS 或读取控制器中的数据。
  • @HPierce 感谢您的回复,您的观点是正确的,但是由于我在视图上生成了一个数组(在这种情况下为树枝),我看不到如何将该数组发送到其他数据库试图从树枝上发送它。当然我可以在 userType 文件上创建一个复选框(而不是构建表单),但它只让我每页有一个复选框,即使我把它放在一个“for”中

标签: php checkbox twig symfony


【解决方案1】:

Twig 不会限制你。您以最糟糕的方式使用 Twig 来限制自己 :) Twig 的主要目的是呈现您的模板,而不是处理您的原始查询。您只是在破坏您的性能,因为您在 Twig 中编写的代码首先由 Twig 解释器读取 - 这是不必要的开销。

您应该将数据库逻辑放在服务中(为此使用 Doctrine - 无需为此类简单查询编写原始 SQL)。在控制器中使用这些服务。最后,将数据从控制器传递到模板并使用 Twig 进行渲染。

如果您想在页面加载后进行一些动态操作 - 编写一些简单的 JavaScript 并利用 AJAX(后台)请求向您的控制器发送或从您的服务器获取一些额外的数据。或者,如果您希望将数据实时推送到您的页面,请使用 Web Sockets。

【讨论】:

  • 感谢您的回复,您在第一段的方法是要走的路
猜你喜欢
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 2014-10-11
  • 2013-07-08
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多