2015-09-25 57 views
0

我試圖通過GET參數來填充表單字段的默認值:Symfony2中:填充請求數據成形式

Form Fields: field1, field2 
URL: http://localhost:8000/some_entity/new?field1=default 

在控制器如果試圖將參數結合到窗體:

public function newAction(Request $request) { 
    $entity = new Entity(); 
    $form = $this->createCreateForm($entity); 

    // first try 
    $request->request->set('field1', $_GET['field1']); 
    $form->handleRequest($request); 

    // second try 
    $form->setData(array('field1' => $_GET['field1'])); 

    // this works, but it's useless in my case 
    $entity->setField1($_GET['field1']); 
    $form->setData($entity); 

    [...] 
} 

你能告訴我怎麼做到這一點嗎?

編輯: 我需要這個,因爲這個控制器不是專門用於這個實體。第二步,我想提供一個按鈕來添加加入實體的「子值」。例如。將comment添加到post,通過$_GET變量提供專用的帖子ID自動選擇。

+0

如何將字段傳遞到您的模板並使用''?我不明白你爲什麼不能在這裏使用你的「實體」,因爲這是正確的解決方案... – tchap

+0

感謝您的回答,我更新了我的文章。 – Dennis

+0

看起來你試圖做複雜的事情,而解決方案非常簡單。你是說你想只有一個行動許多不同的行爲/路線?這絕對不是你應該做的 – tchap

回答

0

最簡單的方法是將這些值傳遞給實體。您可以從請求對象中獲取_GET值,如下所示。

$entity = new Entity(); 
$entity->setField1($request->query->get('field1')); 
//... 
$form = $this->createCreateForm($entity);