2014-08-30 74 views
1

我想在控制器中提取Symfony2表單的動作。 $form->getConfig()->getAction()只是返回一個空字符串。在控制器中獲取Symfony2表單的'action'屬性

有沒有其他辦法?

public function fooAction(Request $request) 
{ 
    $bar = new BarEntity(); 
    $form = $this->createForm(new BarType(), $bar); 

    $form->handleRequest($request); 

    $action = ''; // how to get the action? 

    return array('form' => $form->createView()); 
} 

例子:

<form action="this/is/the/value/im/interested/in" enctype="...">...</form> 
+0

的可能重複[?我怎樣才能在一個Symfony2的控制器,讓動作名稱](http://stackoverflow.com/questions/22852664/how-can-i-get-action-name-in-a-symfony2-controller) – sebbo 2014-08-30 19:30:49

+1

@sebbo對於我不清楚的問題,我表示歉意。我實際上對呈現的'action * value'感興趣。'

' – Bob 2014-08-30 19:35:30

+0

$ form-> getConfig() - > getAction();如果你已經設置了這個動作,它將會工作默認情況下沒有任何操作。您可以在模板中構建它,也可以在構建表單時進行設置。 – Cerad 2014-08-30 19:38:12

回答

1

行動是空的,因爲如果動作不表單生成,Symfony的表單生成器使用HTML表單默認行爲明確指定。當action爲空或未設置時,提交時的默認HTML表單行爲是將表單發送到當前URL。

所以,如果你想獲得該行動的URL,你需要使用一些邏輯:

$action = $form->getConfig()->getAction(); 
if(empty($action) === true) { 
    $action = $this->get('request')->getRequestUri(); 
} 
相關問題