我正在symfony2中创建一个自定义表单类型。但每次我试图覆盖buildForm()方法时,我都会收到以下错误:
致命错误:第33行上SeduceMe''SiteBundle''Form''Type''UniFormTextType::buildView()的声明必须与/Users/alexander/Projekte/SeduceMe/serversymfony204/src/SeduceMe/SiteBundle/Form/Type/UniFormTextType.php中的Symfony''Component''Form''FormType::uildView()兼容
我当然理解这意味着什么。我甚至从上面提到的接口复制了方法签名。还是一样。这是我的课:
namespace SeduceMe'SiteBundle'Form'Type;
use Symfony'Component'Form'AbstractType;
use Symfony'Component'Form'FormBuilder;
class UniFormTextType extends AbstractType
{
public function getDefaultOptions(array $options)
{
return array('placeholder' => null);
}
public function getParent(array $options)
{
return 'text';
}
public function getName()
{
return 'UniFormText';
}
public function buildForm(FormBuilder $builder, array $options)
{
$builder->setAttribute('placeholder', $options['placeholder']);
}
public function buildView(FormView $view, FormInterface $form)
{
$view->set('placeholder', $form->getAttribute('placeholder'));
}
}
需要为FormView和FormInterface添加use语句。
use Symfony'Component'Form'AbstractType;
use Symfony'Component'Form'FormBuilder;
use Symfony'Component'Form'FormView;
use Symfony'Component'Form'FormInterface;
use Symfony'Component'Form'FormError;
use Symfony'Component'Form'CallbackValidator;
use Symfony'Component'Form'FormValidatorInterface;
本节中的符号文档错误:
http://symfony.com/doc/2.0/book/forms.html#creating-表单类
FormTypeInterface::buildView()
现在需要FormBuilderInterface
,而不是FormBuilder
,这正是该错误所抱怨的。
所以你必须这样做:
use Symfony'Component'Form'FormBuilderInterface;
在方法声明中也这样使用:
public function buildForm(FormBuilderInterface $builder, array $options)