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 に答える