2017-09-13 49 views
0

我的問題是我如何處理來自$ _POST數據本身的請求數據。我的意思是,當我試圖$form->handleRequest($request);的symfony試圖從$ _ POST [form_classname]獲得的數據,但我要填補我的表單類直接從基地$ _ POST變量

UPD: 其實我想處理來自外部網站的信息。我必須開發類似API的東西。但沒有授權,令牌等。 所以我決定用我需要的一些屬性來構建表單。驗證後,表單可能會執行一些邏輯。那麼,我做對了嗎?或者會有陷阱?

UPD: 這裏是$ _ POST一個例子,我有處理

Function=TransResponse&RESULT=0&RC=00&AUTHCODE=745113 

正如你所看到的,在要求沒有形成名稱。該$form->handleRequest($request);只能請求是否像

[form_name][Function]=TransResponse&[form_name][RESULT]=0&[form_name][RC]=00&[form_name][AUTHCODE]=745113 

但我不能改變的請求格式,所以我希望在解決它儘可能快,儘可能簡單

+1

不知道你的問題是完全清楚。一切都應該在'$ request'中可用那麼爲什麼你要使用'$ _POST' – RiggsFolly

+0

嘗試'$ request-> get('yourProperty')'你有沒有映射的字段? –

+0

@RiggsFolly其實,我想用$ request。但我想使用handleRequest方法存儲在基數$ _POST中的數據,而不是$ _POST [form_name] –

回答

-1

只要把你的窗體類

/** @inheritdoc */ 
function getBlockPrefix() { 
    return ''; 
} 

下面是有關此方法Documentation

0

使用

信息
  • $this->get('form.factory')->createNamed('')
  • $this->get('form.factory.)->createNamedBuilder('')

創建Form或FormBuilder分別使用整個$_POST/$_GET陣列,用於它的參數。

例子:

/** 
* @Route("/testRoute") 
* @param Request $request 
* @return Response 
*/ 
public function testAction(Request $request): Response 
{ 
    $form = $this->get('form.factory')->createNamedBuilder('', FormType::class, null, ['csrf_protection' => false]) 
     ->add('text', TextType::class) 
     ->setMethod('GET') 
     ->getForm(); 

    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
     return new Response($form['text']->getData()); 
    } 

    return new Response('<a href="?text=123">Submit me</a>'); 
}