我正在symfony2中创建自定义表单类型。但是每当我尝试覆盖buildForm()方法时,我都会收到此错误:
致命错误:SeduceMe \ SiteBundle \ Form \ Type \ UniFormTextType :: buildView()的声明必须与/ Users / alexander / Projekte / SeduceMe /中的Symfony \ Component \ Form \ FormTypeInterface :: buildView()的声明兼容第33行的serversymfony204 / src / SeduceMe / SiteBundle / Form / Type / UniFormTextType.php
我当然明白这意味着什么。我甚至从上面提到的界面复制了方法签名。还是一样。这是我的班级:
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'));
}
}
答案 0 :(得分:3)
需要为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;
答案 1 :(得分:1)
本节中的symfony doc错误:
http://symfony.com/doc/2.0/book/forms.html#creating-form-classes
FormTypeInterface::buildView()
现在需要FormBuilderInterface
,而不是FormBuilder
,这就是错误所抱怨的内容。
所以你必须这样做:
use Symfony\Component\Form\FormBuilderInterface;
并在方法声明中使用它也是这样:
public function buildForm(FormBuilderInterface $builder, array $options)