gpt4 book ai didi

symfony - 如何在 Symfony 5 中为所有表单类型添加自定义默认选项?

转载 作者:行者123 更新时间:2023-12-04 07:49:55 24 4
gpt4 key购买 nike

我需要为我的项目中的所有类型添加一个自定义选项。
目标是添加一个 is_translated选项为 false默认情况下,我可以通过 true到任何可以翻译的字段,以便在模板中获取它并在标签旁边添加一个标志。
翻译的字段可以是 TextType , TextareaType ,或我已经创建的许多自定义类型中的任何一个。这就是为什么我想将此选项添加到所有类型。
要将其添加到仅一种类型,我会这样做:

$resolver->setDefaults([
'is_translated' => false,
]);
如何将此选项添加到所有类型?

最佳答案

我找到了解决方案:
我需要创建一个 FormExtension,如下所述:https://symfony.com/doc/current/form/create_form_type_extension.html

Form type extensions allow you to modify any existing form field types across the entire system.


这是我想出的代码:
namespace App\Form\Extension;

use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\Extension\Core\Type\FormType;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolver;

class FormTypeExtension extends AbstractTypeExtension
{
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['is_translated'] = $options['translated'];
}

public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'is_translated' => false,
]);
}

public static function getExtendedTypes(): iterable
{
return [FormType::class];
}
}

关于symfony - 如何在 Symfony 5 中为所有表单类型添加自定义默认选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67037949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com