2016-08-28 4 views
2

私は拡張EnitityType - 通らないコンストラクタ引数

namespace Main\Form\Type; 

use /* ... */  

class ExtendedEntityType extends EntityType 
{ 

/** 
* @param FormBuilderInterface $builder 
* @param array $options 
*/ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
/* ... */ 
} 

/** 
* @param OptionsResolver $resolver 
*/ 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults([ 
      'invalid_message' => 'The selected entity does not exist', 
     ] 
    ); 
} 

/** 
* @return string 
*/ 
public function getParent() 
{ 
    return EntityType::class; 
} 

が、私はまた、サービスとしてそれをregistredクラス以下でのSymfony \橋\教義\フォーム\タイプ\ EntityTypeを高めてい

<services> 
    <service id="main.type.Extended_entity" class="Main\Form\Type\ExtendedEntityType"> 
     <tag name="form.type_extension" extended-type="Symfony\Component\Form\Extension\Core\Type\EntityType"/> 
     <argument type="service" id="doctrine"/> 
    </service> 
</services> 

そして、

Catchable Fatal Error: Argument 1 passed to Symfony\\Bridge\\Doctrine\\Form\\Type\\DoctrineType::__construct() 
must implement interface Doctrine\\Common\\Persistence\\ManagerRegistry, none given, 
called in \/vagrant\/symfony3-micro\/vendor\/symfony\/symfony\/src\/Symfony\/Component\/Form\/FormRegistry.php 

明らかに何らかの理由で引数が渡されませんDoctrineTypeのコンストラクタです。

コンストラクタを上書きしてEntityManagerを挿入しようとしましたが、同じエラーが発生しました。コンストラクタに渡された引数はありません。 これを行うには何か特別な処理が必要ですか?

Symfony3を使用する。

答えて

3

ここでは2つの概念を混在させています。

あなたはcreating a new custom Form Typeだが、あなたはサービスマッピングを示唆しているとして、あなたはそれのためにないmaking an extensionある意味EntityTypeを拡張しています。

これらは、2つの異なる概念です。

サービスマッピングタグをform_extensionからform_typeに変更する必要があります。

<services> 
    <service id="main.type.Extended_entity" class="Main\Form\Type\ExtendedEntityType"> 
     <tag name="form.type" /> 
     <argument type="service" id="doctrine"/> 
    </service> 
</services> 
関連する問題