2013-10-07 89 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