PHP致命错误:我正在尝试在Symfony2应用程序中实现Form \ AbstractType

时间:2012-07-28 20:17:52

标签: php symfony namespaces

我收到以下错误:

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 ... */
}

2 个答案:

答案 0 :(得分:10)

  

FormBuilderInterface,Symfony2为FormBuilder实现FormBuilderInterface。

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

答案 1 :(得分: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 ... */
}
这是你的意思吗?