获取未在 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 : &lt;input type="text" value="2" name"var_name"&gt;

控制器:$request-&gt;request-&gt;get('var_name')

【讨论】:

在动态表单的情况下,它看起来像是我唯一的解决方案。谢谢你救了我的一天【参考方案2】:

调用$form-&gt;bindRequest($request) 后,您可以调用:$form-&gt;getData() 以获取用户的输入。

但是如果您想接收未映射字段的输入数据,您需要使用提到的$request-&gt;request-&gt;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 中声明,即使它是

数据“未在此范围内声明的成员”

ZipFile 未在 Visual basic 2017 中声明

C#中静态字段声明时赋值与构造函数中赋值

mysql中哪些表的列应声明为solr文档中的实体字段?