2015-10-16 91 views
1

有沒有辦法在buildForm函數內返回頁面的pathInfo或URL?Symfony Formbuilder get pathInfo

class RoomType extends AbstractType 
{ 
    /** 
    * {@inheritdoc} 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
{ 

VarDumper::dump($builder->getRequestHandler()); 

回答

5

只有您有請求對象。一種選擇是在構建表單時傳遞請求。

你的控制器動作

$form = $this->createForm(new RoomType($request), new Room()); 

你的表單類型級

class RoomType extends AbstractType 
{ 
    protected $request; 

    public function __construct(Request $request) { 
     $this->request = $request; 
    } 

    /** 
    * {@inheritdoc} 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     VarDumper::dump($this->request); 
    } 
} 
+1

準確,不要忘記添加使用的Symfony \分量\ HttpFoundation \請求; – rommct

+1

第二種方法是將您的表單類型創建爲服務(http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html#creating-your-field-type-as-a-service),然後注入請求堆棧(http://symfony.com/blog/new-in-symfony-2-4-the-request-stack)。有更多的工作,但服務方法意味着您不必在創建表單時記住注入請求。這也意味着你可以使用嵌套形式的表單類型。 – Cerad