2017-08-10 14 views
0

sonata_type_model_listと継承エンティティに関する問題があります。ソナタsonata_type_model_listおよび継承エンティティ

私は、これらのエンティティ

/** 
* @ORM\Entity() 
*/ 
class Contract 
{ 
    /** 
    * @var Provider 
    * 
    * @ORM\ManyToOne(targetEntity="Provider") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="provider_id", referencedColumnName="id") 
    * }) 
    */ 
    private $provider; 
... 
} 

use Sonata\UserBundle\Entity\BaseUser as BaseUser; 
/** 
* User 
* 
* @ORM\InheritanceType("SINGLE_TABLE") 
* @ORM\DiscriminatorColumn(name="user_type", type="string") 
* @ORM\DiscriminatorMap(
*  { 
*  "app_user" = "User", 
*  "provider" = "AppBundle\Entity\Provider", 
*  } 
*) 
* @ORM\Table(name="fos_user_user", options={"charset"="utf8", "collate"="utf8_bin"}) 
*/ 
class User extends BaseUser 
{ 

とプロバイダエンティティ

namespace AppBundle\Entity; 

use Application\Sonata\UserBundle\Entity\User; 

/** 
* @ORM\Entity() 
*/ 
class Provider extends User 
{ 

は私が

admin.contract: 
     class: AppBundle\Admin\ContractAdmin 
     arguments: [~, AppBundle\Entity\Contract, ~] 
     tags: 
      - { name: sonata.admin, manager_type: orm, label: label.contracts, group: label.contracts } 
     calls: 
      - [setTranslationDomain, [SonataAdminBundle]] 
ContractAdmin

作られてい

use Sonata\AdminBundle\Admin\AbstractAdmin; 

class ContractAdmin extends AbstractAdmin 
{ 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper->add(
       'provider', 
       'sonata_type_model_list', 
       [ 
        'class' => 'AppBundle\Entity\Provider', 
       ], 

と私はプロバイダを追加しようとしたときに処理している間、私はエラー

は、例外がスローされたました:インポッシブルヌルにする方法 (「ID」)を呼び出すために 内の変数 ライン59

で「::フォームSonataDoctrineORMAdminBundle form_admin_fields.html.twig」私は唯一のプロバイダを検索し、追加したいです契約エンティティへのユーザー SonataはProviderまたはUserエンティティ(NULL)を見つけることができず、これをContractAdminでどのように接続するかわかりません。

ここでは何ができますか?

ありがとうございます。

答えて

0

私の解決方法はEntityType :: classで、ソナタタイプは避けてください。それはうまく動作します。

class ContractAdmin extends AbstractAdmin 
{ 
    protected function configureFormFields(FormMapper $formMapper) 
    { 
     $formMapper->add(
       'provider', 
       EntityType::class, 
       [ 
        'class' => 'AppBundle\Entity\Provider', 
        'choice_label' => 'username', 
        'attr' => array(
         'data-sonata-select2' => 'true' 
        ) 
       ], 

しかし、なぜソナタに問題があるのか​​わかりません。誰かが説明やより良い解決策を持っているなら、ここに書いてください。

関連する問題