Symfony 3中如何获取带方括号的表单name属性值?
解决方案:获取嵌套表单字段的值
没问题,我来帮你搞定这个问题~你的表单字段用了嵌套数组命名(transportation[go][when]),所以直接用get('when')是拿不到的,因为这个字段属于transportation数组下的go子数组。下面给你几种可行的方法:
方法一:按嵌套层级直接获取
你可以顺着数组结构一步步取值,记得加上默认值或者空值判断,避免字段未提交时报错:// 基础写法(如果字段必传可以用这个) $when = $request->request->get('transportation')['go']['when']; // 更安全的写法(兼容字段未提交的情况) $when = $request->request->get('transportation', [])['go']['when'] ?? null;方法二:用点语法快速获取(推荐)
Symfony的Request组件支持用**点号.**来访问嵌套数组的元素,这是最简洁的方式:// 直接获取,不存在时返回null $when = $request->request->get('transportation.go.when'); // 也可以指定默认值 $when = $request->request->get('transportation.go.when', '未选择时间');方法三:先取出父数组再处理
如果需要用到transportation里的其他字段,也可以先把整个父数组取出来,再单独提取when:$transportation = $request->request->get('transportation', []); $when = $transportation['go']['when'] ?? null;
小提醒
如果表单可能不提交这个字段,一定要加上空值判断(比如?? null)或者给get()方法传第二个参数作为默认值,这样可以避免出现Undefined index的错误哦~
内容的提问来源于stack exchange,提问作者sim100
相关产品推荐
相关产品推荐

