【发布时间】:2016-12-20 23:10:25
【问题描述】:
我有示例自定义表单类型:
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()也不起作用,我不知道为什么。
【问题讨论】:
-
Afaik 您可以将 URL 添加为字符串。什么都不需要生成,因为它不依赖于任何东西,它是绝对的。我假设 example.com 你的意思是你的项目之外的东西。
-
嗯,应该是动态的,根据应用所在的当前域和目录。
-
如果它与你的项目有关,那么它必须有一个路由和一个控制器/动作。否则生成器将不知道 this 应该指向哪里。
-
是的,我有一个名为“check_form”的路由,现在我想在 setAction() 方法中为该路由生成 url。
-
第三个参数这样做:
$this->generateUrl('check_form', array(), true);