2014-09-24 146 views
0

我已经设置了一个没有类的表单,但是当我提交它时,字段数据为空。Symfony2 getData返回空字段

控制器:

public function indexAction(Request $request) 
{ 
    $form = $this->createFormBuilder() 
     ->add('barcode', 'text') 
     ->getForm(); 
    $form->handleRequest($request); 
    if ($form->isValid()) { 
     $data = $form->get('barcode')->getData(); 
     var_dump($data); 
    } 

    return compact('form'); 
} 

查看:

<form action="{{ path('incompass_sterilization_scanning_index') }}" method="post" {{ form_enctype(form) }} class="form-inline scan"> 
    {{ form_errors(form) }} 
    {{ form_row(form._token) }} 
    {{ form_errors(form.barcode) }} 
    <span class="glyphicon glyphicon-barcode" style="font-size:18px;"></span> 
    <input type="text" id="barcode" class="form-control" placeholder="{% trans %}Scan Bar Code{% endtrans %}" name="barcode" required="required" autofocus="true" /> 
</form> 

当我输入antying到条形码,后续代码var_dump的结果总是NULL

我做了什么错在这里?

感谢

回答

0

这可能是因为您的形式开始标记的name HTML属性。 而不是<form .... ></form>,使用{{ form_start(form) }}{{ form_end(form) }} 或将name="form"添加到您的表单打开标记。
name属性必须与您在symfony中的表单名称相同。如果您使用$this->createFormBuilder()创建表单,它将是“表单”,但您可以使用表单工厂的createNameBuilder设置任何名称。当您呈现开头你的表格标签与{{ form_start(form) }} symfony会自动为你处理它。请记住,当你在一个页面中有多个表单时(更准确地说,当他们是action时,创建命名表单尤其有用(必要)被设置为相同的控制器)。