Php Symfony4停止HandlerRequest()删除我的对象的值
我正在提交表单,在我的控制器中,我使用HandlerRequest验证表单 假设我尝试更新我的对象名“object”-它有一个id、名称和颜色字段 在同一页上,我还显示了一个lost,其中包含我从数据库中获取的所有对象的名称 这是我的密码: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
$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的回应。