Joh*_*ith 4 php symfony-forms symfony
我如何向所有现有的 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'}) }}
Run Code Online (Sandbox Code Playgroud)
...从类型类:
->add(
'periodFrom',
TextType::class,
[
'label' => 'period-from',
'required' => false,
'help' => 'period-from.help'
]
)
Run Code Online (Sandbox Code Playgroud)
我想避免这种情况。谢谢。
为此,在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;
}
}
Run Code Online (Sandbox Code Playgroud)
现在注册表单类型扩展:
services:
app.form_type_extension:
class: AppBundle\Form\Extension\FormTypeExtension
tags:
- { name: form.type_extension, extended_type: Symfony\Component\Form\Extension\Core\Type\FormType }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
662 次 |
| 最近记录: |