2017-05-24 10 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以降で有効です。

第二の問題は、あなたの代わりにsetDefaultOptions機能を

public function configureOptions(OptionsResolver $resolver) 

を使用する必要があるのsymfony 2.7以降

public function setDefaultOptions(OptionsResolverInterface $resolver) 

です。あなたのコードはsymfony 2.6で動作し、symfony 3.2では動作しません。

関連する問題