2015-12-10 143 views
3

我使用gregwarCaptchaBundle在我的项目,我得到了以下错误消息:Could not load type "Symfony\Component\Form\Extension\Core\Type\TextType"GregwarCaptchaBundle: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'); 

    } 
    ... 
} 

找不到任何错误或错误的代码。神秘的是:我在另一个项目中使用完全相同的代码。在这个其他项目中,它工作得很好。

+0

什么版本的Symfony和你使用的捆绑包? – Xatoo

+0

似乎对你正在使用的包正在工作(我假设你使用的是sf3版本)的bundle的sf> = 2.8的支持尝试指向作曲家json中的dev-master。在github上,我发现sf3兼容性问题尚未结束,但如果您使用sf版本<2.8,则可以尝试 – Matteo

+0

使用版本1.1 – Matteo

回答

0

我刚升级到symfony版本2.8,它的工作原理! :)

3

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

编辑:Following some discussion在包的问题队列中。作者已删除v.1.0.13标记并添加了v2.0标记。新的兼容性信息指出:

  • 如果您正在使用的Symfony < 2.8还是PHP 5.5 <,你应该如果你正在使用的Symfony> = 2.8和PHP> = 5.5使用版本1 *
  • ,你应该使用版本2. *