php – Symfony2 – 如何停止Form- handleRequest从null在post数据中不存在的字段
|
我有一个在Symfony中构建的表单,并且在视图中呈现时,html表单可能包含也可能不包含表单对象中的所有字段(实体类型有几种不同的状态,并且不是所有字段都被包含在风景). 问题是,当在提交处理程序中处理表单时,通过表单对象的handleRequest()方法,将该实体中不存在于该数据中的任何属性重新设置为null,从而消除任何现有值. 有没有办法告诉Symfony不要那么愚蠢,只处理POST数据中存在的字段? 或者我必须在handleRequest调用之前克隆实体,然后循环遍历POST值,并将相关值从post-handleRequest实体复制到实体的pre-handleRequest克隆,因此我保留不在POST数据. 唷!正如你所看到的,它有点愚蠢的解决方案,有点尴尬的问题,tbh. 我可以理解symfony这样做,如果实体是一个新创建的对象,但它已经从DB加载,然后调用handleRequest – 它应该是明智的,知道该对象已被初始化,只设置在发布数据. 感谢任何帮助. 问候 史蒂夫. 总之,不要使用handleRequest.您应该直接使用submit,而将clearMissing参数设置为false. 的Symfony /组件/表格/ FormInterface /** * Submits data to the form,transforms and validates it. * * @param null|string|array $submittedData The submitted data. * @param bool $clearMissing Whether to set fields to NULL * when they are missing in the * submitted data. * * @return FormInterface The form instance * * @throws ExceptionAlreadySubmittedException If the form has already been submitted. */ public function submit($submittedData,$clearMissing = true); 当您使用handleRequest时,它会处理您想要提交的数据,然后使用$form-> submit($data,’PATCH’!== $method)提交它;这意味着除非您使用PATCH方法然后它会清除字段. 自己提交表单,不用清除可以使用… $form->submit($request->get($form->getName()),false); ..它从请求中获取表单数据数组,并直接提交,但是将缺少的字段参数设置为false. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
