8

我收到以下错误:

Fatal error: Declaration of Bean\OauthServerBundle\Form\Type\AuthorizeFormType::buildForm() must be compatible with Symfony\Component\Form\FormTypeInterface::buildForm(Symfony\Component\Form\FormBuilderInterface $builder, array $options) in src/Bean/OauthServerBundle/Form/Type/AuthorizeFormType.php on line 25

不知道为什么我会收到此错误。AbstractType::buildForm() 采用 FormBuilderInterface,Symfony2 为 FormBuilder 实现 FormBuilderInterface。

这是我的来源的内容:

<?php
namespace Bean\OauthServerBundle\Form\Type;

use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\AbstractType;

class AuthorizeFormType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        /* some code ... */
   }

   /* more code ... */
}
4

2 回答 2

10

FormBuilderInterface,Symfony2 为 FormBuilder 实现了 FormBuilderInterface。

这并没有改变事实,buildForm必须在父类中声明并接受任何实现的对象FormBuilderInterface

于 2012-07-28T20:37:38.477 回答
9

所以 symfony book 中的代码应该是这样的:

namespace Bean\OauthServerBundle\Form\Type;

use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\AbstractType;

class AuthorizeFormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        /* some code ... */
   }

   /* more code ... */
}

你是这个意思吗?

于 2012-10-20T22:13:23.103 回答