2017-05-24 132 views
1

这是我的表格:的Symfony 分量表格异常 InvalidArgumentException:未能加载类型 “......”

<?php 

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolverInterface; 

class JoseType extends AbstractType 
{ 
    /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('nombre') 
      ->add('apellido') 
      ->add('edad') 
     ; 
    } 

    /** 
    * @param OptionsResolverInterface $resolver 
    */ 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'AppBundle\Entity\Jose' 
     )); 
    } 

    /** 
    * @return string 
    */ 
    public function getName() 
    { 
     return 'appbundle_jose'; 
    } 
} 

这是我的测试:

use AppBundle\Form\JoseType; 
use Symfony\Component\Form\Test\TypeTestCase; 

class ProjectTypeTest extends TypeTestCase 
{ 
    public function testForm() 
    { 
     $form = $this->factory->create(JoseType::class); 

    } 
} 

要在运行测试收到此:

的Symfony \元器件\表格\异常\ InvalidArgumentException:未能加载类型 “的appbundle \表格\ JoseType”

我有symfony 2.6.13

在symfony 3.2的作品中,但2.6不起作用,为什么? ... 任何想法?

+0

清除缓存('php app/console cache:clear [--env = prod --no-debug]'),你使用的是作曲家自动加载映射?如果是这样,请尝试再次转储它('composer dump-autoload -a')。 – ccKep

回答

1

第一个问题是,在symfony 2.6中,你应该创建你的类型的实例并将其传递给创建函数。

$type = new JoseType(); $form = this->factory->create($type); 

您写的代码自版本2.8开始有效。

第二个问题是在

public function setDefaultOptions(OptionsResolverInterface $resolver) 

因为symfony的2.7,你应该使用

public function configureOptions(OptionsResolver $resolver) 

代替setDefaultOptions功能。所以你的代码将在symfony 2.6中工作,而不会在symfony 3.2中

相关问题