2017-05-24 34 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中

相關問題