我无法获得$ this-> generateUrl()工作,但它可以在我的控制器中工作,或者我应该定义' setAction'用另一种方式?
class UserLoginType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setMethod('POST')
->setAction($this->generateUrl('fos_user_security_check'))
->add('username', 'text')
->add('password', 'password')
->add('save', 'submit');
}
public function getName()
{
return 'user_login';
}
}
答案 0 :(得分:6)
如果您要在单独的类中而不是在控制器中构建表单,则应将action
传递给表单类型,如下所示:
// In your controller
$form = $this->createForm(new FormType(), $object, array(
'action' => $this->generateUrl('target_route'),
'method' => 'POST',
));
AbstractType
不包含任何方法generateUrl()
,这就是为什么您无法直接在该类型中设置操作的原因。您可以在此处找到详细信息:http://symfony.com/doc/current/book/forms.html#changing-the-action-and-method-of-a-form
答案 1 :(得分:0)
是的,在Form类的函数buildForm中,输入:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setMethod('POST')
->setAction( $options["data"]["action"])
->add('name', TextType::class, array('label' => 'Nombre'))
;
}