[英]Access POST values in Symfony2 request object
好的,這是一個新手問題,但我在任何地方都找不到答案。 在 Symfony2 的控制器中,我想從我的表單之一訪問 POST 值。 在控制器中,我有:
public function indexAction()
{
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form = $this->get('form.factory')->create(new ContactType());
$form->bindRequest($request);
if ($form->isValid()) {
$name_value = $request->request->get('name');
不幸的是$name_value
沒有返回任何東西。 我究竟做錯了什么? 謝謝!
表單發布值存儲在請求中表單的名稱下。 例如,如果您覆蓋了 ContactType() 的getName()
方法以返回“contact”,您可以這樣做:
$postData = $request->request->get('contact');
$name_value = $postData['name'];
如果您仍然遇到問題,請嘗試在$request->request->all()
上執行var_dump()
$request->request->all()
以查看所有帖子值。
此解決方案自 2.3 起已棄用,並將在 3.0 中刪除, 請參閱文檔
$form->getData();
給你一個表單參數數組
來自symfony2 書第 162 頁(第 12 章:表格)
[...] 有時,您可能只想使用沒有類的表單,並獲取提交數據的數組。 這實際上非常簡單:
public function contactAction(Request $request) {
$defaultData = array('message' => 'Type your message here');
$form = $this->createFormBuilder($defaultData)
->add('name', 'text')
->add('email', 'email')
->add('message', 'textarea')
->getForm();
if ($request->getMethod() == 'POST') {
$form->bindRequest($request);
// data is an array with "name", "email", and "message" keys
$data = $form->getData();
}
// ... render the form
}
您還可以直接通過請求對象訪問 POST 值(在本例中為“名稱”),如下所示:
$this->get('request')->request->get('name');
但是,請注意,在大多數情況下,使用 getData() 方法是更好的選擇,因為它在被表單框架轉換后返回數據(通常是一個對象)。
當你想訪問表單令牌時,你必須使用有問題的$postData = $request->request->get('contact');
的答案$postData = $request->request->get('contact');
因為getData()
從數組中刪除元素
從 2.3 開始,您應該使用handleRequest
而不是bindRequest
:
$form->handleRequest($request);
對我有用的是使用這個:
$data = $request->request->all();
$name = $data['form']['name'];
可以在控制器中訪問字段數據:清單 12-34
$form->get('dueDate')->getData();
另外,未映射字段的數據也可以直接修改:示例12-35
$form->get('dueDate')->setData(new \DateTime());
第 164 頁 symfony2 書(生成於 2013 年 10 月 9 日)
我通過以下方式訪問我的多部分發布請求的 ticketNumber 參數。
$data = $request->request->all();
$ticketNumber = $data["ticketNumber"];
我認為為了獲取由表單對象綁定和驗證的請求數據,您必須使用:
$form->getClientData();
如果你是新手,歡迎來到 Symfony2,一個開源項目,所以如果你想學到很多東西,你可以開源!
來自“Form.php”:
getData() getNormData() getViewData()
您可以在此文件中找到更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.