PHP фатальная ошибка: Я пытаюсь реализовать формуAbstractType в моем приложении Symfony2

Я получаю следующую ошибку:

Fatal error: Declaration of BeanOauthServerBundleFormTypeAuthorizeFormType::buildForm() must be compatible with SymfonyComponentFormFormTypeInterface::buildForm(SymfonyComponentFormFormBuilderInterface $builder, array $options) in src/Bean/OauthServerBundle/Form/Type/AuthorizeFormType.php on line 25

Не уверен, почему я получаю эту ошибку. AbstractType:: buildForm() принимает FormBuilderInterface, а Symfony2 реализует FormBuilderInterface для FormBuilder.

вот содержание моего источника:

<?php
namespace BeanOauthServerBundleFormType;

use SymfonyComponentFormFormBuilder;
use SymfonyComponentFormAbstractType;

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

   /* more code ... */
}

2 ответов


FormBuilderInterface, а Symfony2 реализует FormBuilderInterface для FormBuilder.

это не меняет того факта, что buildForm должен быть объявлен как в родительском классе и принять любой объект, который реализует FormBuilderInterface.


поэтому код из книги symfony должен выглядеть так:

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

это то, что вы имеете в виду?