Symfony似乎没有加载AppBundle\Form\Extension
中找到的任何类,而the documentation建议将其注册为服务之后应该加载。
我的扩展程序如下所示:
<?php
//src/AppBundle/Form/Extension/FieldTypeExampleExtension.php
namespace AppBundle\Form\Extension;
use Symfony\Component\Form\AbstractTypeExtension;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormView;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class FieldTypeExampleExtension extends AbstractTypeExtension
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->setAttribute('example', $options['example']);
}
public function buildView(FormView $view, FormInterface $form, array $options)
{
$view->vars['example'] = $options['example'];
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'example' => null,
));
}
public function getExtendedType()
{
return 'form';
}
}
并将其注册为如此服务:
#services.yml
AppBundle.ExampleExtension:
class: AppBundle\Form\Extension\FieldTypeExampleExtension
tags:
- { name: form.type_extension, alias: field }
当我尝试使用此扩展程序时,出现以下错误:
$builder->add('city', 'text',array(
'required' => false,
//'help is made available by https://github.com/simplethings/SimpleThingsFormExtraBundle
'help' => 'separate multiple cities with a comma. Example: Chicago, Miami, San Fransisco',
'example' => 'that those them'
))
选项“示例”不存在。
在FieldTypeExampleExtension.php
中输入明显的语法错误时,表单仍然没有错误地呈现,这让我相信扩展从未加载过。 Symfony文档和other blog posts表明它会自动加载。
有没有办法强制加载?或以其他方式实施扩展名?
答案 0 :(得分:1)
标记的别名键是此扩展名的字段类型 应该适用于。
您不能调用您的扩展程序,只能调用正常的“文本”字段。别名是关键,在你的示例'字段'中,所以你应该这样做:
$builder->add('city', 'field', ......
或者,如果您想扩展文本字段类型,您将使用“text”作为别名,并更改getExtendedType()
函数以返回“text”。