Php GregwarCaptchaBundle:未能加载TextType

Php GregwarCaptchaBundle:未能加载TextType,php,symfony,captcha,Php,Symfony,Captcha,我在我的项目中使用了gregwarCaptchaBundle,收到以下错误消息:无法加载类型“Symfony\Component\Form\Extension\Core\type\TextType” 详情: at FormRegistry ->getType ('Symfony\Component\Form\Extension\Core\Type\TextType') in vendor/symfony/symfony/src/Symfony/Component/Form/FormReg

我在我的项目中使用了gregwarCaptchaBundle,收到以下错误消息:
无法加载类型“Symfony\Component\Form\Extension\Core\type\TextType”

详情:

 at FormRegistry ->getType ('Symfony\Component\Form\Extension\Core\Type\TextType')
in vendor/symfony/symfony/src/Symfony/Component/Form/FormRegistry.php at line 121  +
at FormRegistry ->resolveAndAddType (object(CaptchaType))
in vendor/symfony/symfony/src/Symfony/Component/Form/FormRegistry.php at line 86  +
at FormRegistry ->getType ('captcha')
in vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php at line 82  +
at FormFactory ->createNamedBuilder ('captcha', 'captcha', null, array('distortion' => false, 'reload' => true, 'as_url' => true, 'humanity' => '1000'))
in vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php at line 106  +
at FormBuilder ->create ('captcha', 'captcha', array('distortion' => false, 'reload' => true, 'as_url' => true, 'humanity' => '1000'))
in vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php at line 267  +
at FormBuilder ->resolveChildren ()
in vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php at line 215  +
at FormBuilder ->getForm ()
in vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php at line 39  +
at FormFactory ->create (object(RatingForm), null, array())
in vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php at line 250  +
at Controller ->createForm (object(RatingForm))
in vendor/xxBundle/RatingBundle/pp/RatingBundle/Controller/DefaultController.php at line 63  +
at DefaultController ->renderRatingInterfaceAction (object(Request), 'Profil', '3209', true, false, true, '5')
    ...
formtype的代码如下所示:

<?php


    ...

    public function setUser($user) {
        $this->user = $user;
    }

    public function setSession($session) {
        if (!is_null($session)) {
            $sessionBlocked = $session->get(sprintf('gcb_%s', 'captcha') . '_humanity');
            $this->sessionBlocked = $sessionBlocked;
        }
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        //$user = $builder->getData()->getUser();

        $builder->setMethod('post');
        $builder->setAction('');
        $builder->add('commenctcontent', 'textarea', array(
            'required' => true,
        ))
        ->add('name','text',array(
            'required' => true,
        ))
        ->add('email','text',array(
            'required' => true,
        ));

        if(!is_object($this->user)){
            $options = array(
                'distortion'    => false,
                'reload'        => true,
                'as_url'        => true,
                'humanity'      => 1000,
            );
            $builder->add('captcha', 'captcha', $options);
        }

        $builder->add('starratevalue','hidden');

    }
    ...
}

GregwarCaptchaBundle试图通过其完全限定类名加载验证码表单类型的基类型。这是Symfony 2.8中添加的功能,是3.0中的默认功能。使用,该捆绑包与Symfony 3.0兼容,但与Symfony 2.7不兼容。使用v1.0.12版而不是v1.0.13版应该可以解决问题

编辑:在捆绑包的问题队列中。作者删除了v.1.0.13标记,并添加了v2.0标记。新的兼容性信息说明:

  • 如果您使用的是Symfony<2.8或PHP<5.5,那么应该使用版本1*
  • 如果您使用的是Symfony>=2.8和PHP>=5.5,那么应该使用版本2*

我刚刚升级到symfony 2.8版,它可以正常工作!:)

您使用的Symfony和bundle的哪个版本?您正在使用的bundle对sf>=2.8的支持似乎正在进行中(我假设您使用的是sf3版本),请尝试在composer json中指向dev master。在github上,我看到sf3兼容性问题尚未解决,但您可以尝试使用sf版本,我使用的是sf 2.7.*和捆绑包版本“dev master”(来自composer.json),因此请尝试标记的版本1.1