2016-10-09 12 views
3

如何將自定義的「幫助」選項添加到所有現有的Symfony3類型?向Symfony3添加幫助選項所有FormTypes

在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' 
    ] 
) 

我想避免這種情況。謝謝。

回答

1

要做到這一點,這http://symfony.com/doc/current/form/form_customization.html#adding-help-messages後,您可以創建一個表單類型的擴展名來傳遞help選項將所有表單字段:

// src/AppBundle/Form/Extension/FormTypeExtension.php 

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 }