【问题标题】:Get value of a field not declared in FormType获取未在 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);

如何收集控制器中输入的值?

【问题讨论】:

    标签: symfony symfony-forms


    【解决方案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 验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        • 1970-01-01
        • 2021-07-04
        • 2021-07-17
        相关资源
        最近更新 更多