2015-10-16 2 views
1

Есть ли способ вернуть pathInfo или URL-адрес страницы внутри функции buildForm?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 \ Component \ 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

Смежные вопросы