Могу ли я изменить действие класса формы при сборке?
В методе класса форм buildForm
(производном от AbstractType
) могу ли я задать действие этой формы?
То, что я хочу сделать, похоже на метод setAction
, который я могу использовать при создании встроенной формы:
$form = $this->createFormBuilder()
->setAction($this->generateUrl('my_action'))
->add('field', 'text')
->add('button', 'submit');
Я имею в виду, является ли setAction
эквивалентом классов форм?
1 answers
Вы получаете доступ к тому же построителю форм в методе buildForm
, поэтому просто вызов setAction
на нем будет работать:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->setAction($path);
}
Вопрос в том, как вы передаете $path
своему типу формы. Одним из способов было бы передать его в качестве опции при создании формы. Но если вы все равно передаете $path
, почему бы просто не установить action
сам?
$form = $this->createForm(new MyType(), $object, array(
'action' => $this->generateUrl('my_action'),
));
Другим способом было бы ввести маршрутизатор в тип формы и использовать его для создания URL-адреса, но я не думаю, что это хорошая идея вид решений в виде формы.