Php Symfony4停止HandlerRequest()删除我的对象的值

Php Symfony4停止HandlerRequest()删除我的对象的值,php,forms,symfony,symfony4,Php,Forms,Symfony,Symfony4,我正在提交表单,在我的控制器中,我使用HandlerRequest验证表单 假设我尝试更新我的对象名“object”-它有一个id、名称和颜色字段 在同一页上,我还显示了一个lost,其中包含我从数据库中获取的所有对象的名称 这是我的密码: $object = self::getObjectById($objectId); $objects = self::getAllObjects(); $objectForm = self::CreateObjectForm($object); $ob

我正在提交表单,在我的控制器中,我使用HandlerRequest验证表单

假设我尝试更新我的对象名“object”-它有一个id、名称和颜色字段

在同一页上,我还显示了一个lost,其中包含我从数据库中获取的所有对象的名称

这是我的密码:

$object = self::getObjectById($objectId);

$objects = self::getAllObjects();

$objectForm = self::CreateObjectForm($object);

$objectFormForm->handleRequest($request);

dd($objects);
当我提交表单并打开“姓名”字段时, 它抛出一个错误,即当它重新加载页面时,该字段是必需的,表单的name字段仍然为空,这是正常的

但问题是,在此页面上显示的对象列表中,我试图更新的对象的名称在此列表中不再显示

我不知道为什么会发生这种情况,因为我获取的对象列表与表单对象完全不同。当我dd()handleRequest()之后的对象时,我可以在转储的变量中看到name字段确实是空的。当我检查数据库时,name字段不是空的,仍然保留旧名称。这是有意义的,因为对象没有持久化并刷新到de db。 当我在handleRequest()之前添加相同的列表时,一切都正常

如何防止这种行为?为什么会这样

我不知道为什么会发生这种情况,因为我从表单对象中完全分离获取了这个对象列表

它引用的实体与get在表单提交的当前活动脏状态下转储的实体相同

如果需要呈现干净的、持久化的值,那么在处理请求之前,只需要将它们作为字符串而不是对象存储在变量中

试着这样做:

$object = self::getObjectById($objectId);

$objects = self::getAllObjects();

$persistedObjects = [];
foreach($objects as $obj){
  $persistedObjects[$obj->getId()] = $obj->getName();
}

$objectForm = self::CreateObjectForm($object);

$objectFormForm->handleRequest($request);

dd($persistedObjects);

我也想到了这一点,我只是觉得奇怪,没有其他办法?我觉得这个不太干净。仍然是tnx的回应。