php - Symfony 如何删除集合项
问题描述
当我提交带有已删除元素的集合时,我的元素已正确删除,但我不明白 Symfony 如何删除元素。
当我die();
的脚本没有停止到我的卸妆方法中时,我认为 Symfony 没有传递到我的方法中。那么,Symfony 如何在不调用我的 remover 方法的情况下删除我的元素?它是如何工作的?
应用程序上下文:
我从 API 获得了一些数据,我只想从我的 Web 界面添加或删除数据。所以,在我添加/删除数据之后,我只想在 API 上发布新对象并删除相关行。我还可以比较预提交时的原始对象(从 API 获取)和后提交时的新对象,以查看两者之间的差异。但是,如果存在调用对象移除器的方法,我不必使用第二个解决方案,我认为使用个人移除器的第一个解决方案更好。
我的卸妆示例:
public function removeMyElement($myElement)
{
personnalMethodTreatment($myElement);
if (!$this->myElement->contains($myElement)) {
return;
}
$this->myElement->removeElement($myElement);
}
谢谢你的帮助 !
解决方案
所以,感谢大家的帮助。我写这些行是为了帮助其他有同样问题的人。
默认情况下,Symfony 称它为自己的移除器。如果您想调用自定义移除器,请将by_reference
选项添加false
到您的集合表单类型。
by_reference: false
有关by_reference
https://symfony.com/doc/current/reference/forms/types/collection.html#by-reference的更多信息
总而言之,默认情况下 Symfony 会按以下顺序调用您的自定义方法:
Setter
>Remover
所以,如果你有一个 setter 和一个 remover,Symfony 会更喜欢前者。
为了解决我的问题,我遵循了先前的说明,并将我的具体处理纳入我的二传手。
希望能帮助到人们。
解决方案
推荐阅读
- c# - 如何转换线程代码(VB.net 到 C#)..?
- for-loop - 新使用 for 循环
- javascript - 如何在处理 HTTP 请求之前将 csv 文件同步加载到内存中
- javascript - 使用 javascript 从 ul li 获取每个层次结构级别的字符串行
- java - 打开 Eclipse 时收到错误消息,请参阅显示的日志文件错误消息
- batch-file - 如何区分 MS Access 和 Access Runtime 注册表项?
- r - R Igraph 子图给定节点索引和要包含在图中的节点数
- javascript - 如何刷新或重绘表格行
- django - 在 Django 中继续检查帐户类型的最佳方法
- android - android RXJava 中的 concatMap 问题