我有示例自定义表单类型:
namespace Acme\SimpleBundle\Form\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; class ExampleType extends AbstractType { public function buildForm(FormBuilderInterface $builder,array $options) { $builder->setAction(****-----GENERATE-ROUTE-ABSOLUTE-URL-HERE-----****) ->add('email','text') ->add('send','submit'); } public function getName() { return 'example'; } public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'error_bubbling' => true )); } }
如何在路线中生成绝对URL(如http://example.com/admin/check_form)?
$this-> generateUrl()不起作用,但是它不是控制器,而且$this-> get(‘router’) – > generate()也不起作用,我不知道为什么.
有两种方法可以做到:
>将表单类型注册为服务并将路由器注入其中:doc
>在控制器中创建表单时,将操作作为选项传递:
$form = $this->createForm(new FormType(),null,array('action' => $this->generateUrl('your_route',array(/* your route parameters */),true));
请注意,您必须将true作为最后一个参数传递,以强制路由器生成绝对URL(正如您要求的Symfony< 2.8).如果您正在使用Symfony3,请在评论中使用UrlGeneratorInterface :: ABSOLUTE_URL而不是Emilie建议的true.