表单标签中的 Symfony 路由器 link

Symfony router link in form label

我正在寻找在 Symfony 5 表单标签中嵌入路由器 link 的可能性。 我需要在注册表格类型的 使用条款 页面中添加 link。

这是我的部分代码:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        // some code
        ->add('terms', CheckboxType::class, [
            'label' => 'I accept <a href="/terms" target="_blank">Terms of use</a>', // <= here I need router link instead of '/terms' 
            'label_attr' => [
                'class' => 'form-check-label'
            ],
            'label_html' => true,
            'mapped' => false
        ])
        //some other code
    ;
}

我知道,我可以使用 TWIG,但我正在寻找 PHP 的可能性 ;)

您可以在您的 FormType 中注入路由器并用它生成 link。

class FormType extends AbstractType{

    private $router;

    function __construct(RouterInterface $router){
        $this->router = $router;
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $tosUrl = $this->router->generate('terms');
        
        $builder
            // some code
            ->add('terms', CheckboxType::class, [
                'label' => 'I accept <a href="' . $tosUrl .'" target="_blank">Terms of use</a>',
                'label_attr' => [
                    'class' => 'form-check-label'
                ],
                'label_html' => true,
                'mapped' => false
            ])
            //some other code
        ;
    }
}