如何判断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
相关产品推荐
相关产品推荐

