php - 向 Symfony 3 所有表单类型添加帮助选项

标签 php symfony symfony-forms

如何为所有现有的 Symfony3 类型添加自定义“帮助”选项?

在 Symfony2 中,我是这样做的 http://toni.uebernickel.info/2012/11/03/how-to-extend-form-fields-in-symfony2.1.html但现在我正在升级到 Symfony3,它不再工作了 - 它给了我选项“帮助”不存在

http://symfony.com/doc/current/form/form_customization.html#adding-help-messages会工作,但需要将所有帮助文本移动到模板中:

{{ form_widget(form.title, {'help': 'foobar'}) }}

...来自类型类:

->add(
    'periodFrom',
    TextType::class,
    [
        'label' => 'period-from',
        'required' => false,
        'help' => 'period-from.help'
    ]
)

我想避免这种情况。谢谢。

最佳答案

然后再做 http://symfony.com/doc/current/form/form_customization.html#adding-help-messages您可以创建一个表单类型扩展以将 help 选项传递给所有表单字段:

<?php
// src/AppBundle/Form/Extension/FormTypeExtension.php
namespace AppBundle\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['help'] = $options['help'];
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'help' => null,
        ));
    }

    public function getExtendedType()
    {
        return FormType::class;
    }
}

现在注册表单类型扩展:

services:
    app.form_type_extension:
        class: AppBundle\Form\Extension\FormTypeExtension
        tags:
            - { name: form.type_extension, extended_type: Symfony\Component\Form\Extension\Core\Type\FormType }

关于php - 向 Symfony 3 所有表单类型添加帮助选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39944874/

相关文章:

php - Twig:默认使用 "Ignore Missing"on Include

php - Ajax、PHP/MySQL 搜索请求不断崩溃

php - Symfony2 : disable Twig cache

Symfony2 : Radio buttons in a collection

Symfony FormType getParent与继承

php - 在 twig symfony 中显示所有表单错误

php - Laravel Echo 不监听事件

php - 找到所有可能的交换卡的方法

symfony - 无法确定属性 "file"的访问类型

php - Symfony2 : Edit user without having password