获取未在 FormType 中声明的字段的值
Posted
技术标签:
【中文标题】获取未在 FormType 中声明的字段的值【英文标题】:Get value of a field not declared in FormType 【发布时间】:2013-09-15 18:06:36 【问题描述】:我在nameType.php
中声明了一个表单,视图呈现所有字段,但我想手动添加另一个字段。
表格:
<form action=" path('create') " method="post" form_enctype(form) >
form_widget(form)
<input type="text" value="2">
</form>
并获取控制器中的值:
$form->bindRequest($request);
如何收集控制器中输入的值?
【问题讨论】:
【参考方案1】:您无法从$form
中检索input
值,因为它不是其中的一部分。
您必须使用name
属性从Controller
中的request
检索它:
html : <input type="text" value="2" name"var_name">
控制器:$request->request->get('var_name')
【讨论】:
在动态表单的情况下,它看起来像是我唯一的解决方案。谢谢你救了我的一天【参考方案2】:调用$form->bindRequest($request)
后,您可以调用:$form->getData()
以获取用户的输入。
但是如果您想接收未映射字段的输入数据,您需要使用提到的$request->request->get('field_name')
。
【讨论】:
【参考方案3】:如果您尝试这样做是因为表单已链接到您的实体字段,您可以将字段添加到未映射的 FormType。那么您就不需要实体上的 getter 和 setter。
->add("inputName", "text", array("mapped"=>false, "data"=>2, "label"=>false))
在控制器中获取数据:
$form->get("inputName")->getData();
【讨论】:
感谢@albert,这是正确的做法。提问者应将此作为正确答案。 如果输入的是多选呢? 你应该得到一个包含所选值的数组【参考方案4】:如何收集控制器的输入值?
即时满足的方法是使用
$form->get('inputName')->getViewData()
用于未映射的字段。但我确信有更好的方法符合 Symfony 验证。
【讨论】:
以上是关于获取未在 FormType 中声明的字段的值的主要内容,如果未能解决你的问题,请参考以下文章
GLFW3 错误:“glfwGetWin32Window”未在此范围内声明
Activity 未在 AndroidManifest.xml 中声明,即使它是