You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断Twig生成的表单提交是新增还是更新已有条目?

解决方案

你可以通过以下两种常用的方式实现判断:

方法1:在Twig模板中给表单加自定义标识属性

通常更新场景下你的表单会绑定已有实体数据,新增场景下实体是未持久化的,所以你可以直接在form_start方法里加自定义的data-*属性:

{# 新增场景下theForm对应的实体没有id,更新场景有id #}
{{ form_start(theForm, {'attr': {'data-is-new': theForm.vars.data.id is empty ? '1' : '0'}}) }}
    {{ form_row(theForm.name) }}
    {{ form_row(theForm.lastName) }}
...
{{ form_end(theForm) }}

然后在JS中直接读取这个属性判断即可:

$('form').on('submit', function(e) {
   const isNew = $(this).data('is-new') == 1;
   if (isNew) {
   // 新增逻辑
   } else {
   // 更新逻辑
   }
});

方法2:判断表单中是否存在主键隐藏字段

如果你的表单在编辑时会自动生成主键的隐藏字段,你也可以直接在JS中判断该字段是否存在、值是否为空:

$('form').on('submit', function(e) {
   const entryId = $(this).find('input[name="theForm[id]"]').val();
   if (!entryId) {
   // 新增逻辑
   } else {
   // 更新逻辑
   }
});

注意:如果你的表单主键字段名不是id,把上面的字段名替换成你实际的主键字段即可。

内容的提问来源于stack exchange,提问作者Hevyweb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:54:03