2013-10-07 47 views
1

我是Symfony的新手。我已经看到关于这个主题的很多线索,但没有人能够回答我所拥有的问题。访问Symfony2中的HTML表单数据

我在我的网站上有一个“联系”表单。这个联系表单提交给path('submit_query'),它调用了submitQueryController。我没有通过Symfony构建表单,也没有使用对象或实体。我的问题是,无论我做什么,我都无法访问控制器中的表单数据。我已经尝试了我所见过的每个线程建议,并且我要么获得REQUEST对象的一大堆数据(其中没有一个是我的表单数据),要么我什么也得不到。

有没有简单的方法来访问控制器内张贴的表单数据?

我的HTML表单:

<form id="contact_form" role="form" action="{{ path('submit_query') }}" method="post">` 
<div class="panel-body"> 
    <fieldset> 
     <div class="form-group"> 
      <label for="name" class="control-label">Name</label> 
      <input type="text" class="form-control" id="name" placeholder="Full Name" data-validation-error-msg="Please enter your full name" data-validation="length" data-validation-length="min1"> 
     </div> 
     <div class="form-group"> 
      <label for="email" class="control-label">Email Address</label> 
      <input type="email" class="col-sm-3 form-control" id="email" placeholder="Email Address" data-validation-error-msg="Please enter a valid email address" data-validation="email length" data-validation-length="min1"> 
     </div> 
     <div class="form-group"> 
      <label for="number" class="control-label">Contact Number</label> 
      <input type="text" class="form-control" id="number" placeholder="Contact Telephone Number"> 
     </div> 
     <div class="form-group"> 
      <label for="subject" class="control-label">Subject</label> 
      <input type="text" class="form-control" id="subject" placeholder="The subject of your query" data-validation-error-msg="Please enter a subject for your query" data-validation="length" data-validation-length="min1"> 
     </div> 
     <div class="form-group"> 
      <label for="query" class="control-label">Query</label> 
      <textarea class="form-control" id="query" rows="5" placeholder="Please enter a detailed description of your query" data-validation-error-msg="Please enter your query description" data-validation="length" data-validation-length="min1"></textarea> 
     </div>  
    </fieldset> 
</div> 
<div class="panel-footer clearfix text-center"><button type="submit" class="btn btn-default">Submit Query</button></div> 
</form> 

控制器:

当我尝试:

public function submitQueryAction(Request $request) 
{ 
    $data = $request->request->all(); 
    die(var_dump($data)); 
} 

我得到了 “$ DATA” 一个空数组。

当我尝试:

public function submitQueryAction() 
{ 
    $data = $this->getRequest()->request->all(); 
    die(var_dump($data)); 
} 

我得到一个Request对象的vardump,但没有数据是我的。我也尝试过使用Access POST values in Symfony2 request object提供的解决方案来获取帖子值而不使用对象或实体,但是我收到一个错误“调用未定义的方法Symfony \ Component \ Form \ Form :: bindRequest()”。

请帮助。 预先感谢您。

回答

3

您错过了输入的html属性name
如果表单的一个元素遗漏了这个属性,那么它的数据将不会被发送。

w3.org

每一个成功的控制与当前值作为提交的表单数据集的一部分配对其控制的名字。必须在FORM元素中定义一个成功的控件,并且必须具有控件名称。

+0

呃,这么愚蠢的疏忽。我以为我有他们,但我只有身份证。我一直在挣扎几个小时!非常感谢你。 – Magnanimity

+0

不客气!您还应该看看[Symfony窗​​体](http://symfony.com/doc/current/book/forms.html)来生成此代码。 – Brewal