1

config.ymlにデータベースの2つの接続があります:

doctrine:
dbal:
    default_connection: default
    connections:
        default:
            host:     %database_host%
            port:     %database_port%
            dbname:   %database_name%
            user:     %database_user%
            password: %database_password%
            driver:   %database_driver%
            charset:  UTF8
        spoop:
            host:     %database_host%
            port:     %database_port%
            dbname:   %spoop_database_name%
            user:     %spoop_database_user%
            password: %spoop_database_password%              
            driver:   %database_driver%
            charset:  UTF8

orm:
    default_entity_manager:   default
    entity_managers:
        default:
            connection:       default
            #metadata_cache_driver: apc
            #query_cache_driver: apc
            #result_cache_driver: apc
            mappings:
                AcmeUserBundle: ~
                AcmeBannieresBundle: ~
                FOSUserBundle: ~
                #SpoopAdminBundle: ~
        spoop:
            connection:       spoop
            #metadata_cache_driver: apc
            #query_cache_driver: apc
            #result_cache_driver: apc
            mappings:
                AcmeModerationBundle: ~

    auto_generate_proxy_classes: %kernel.debug%  

したがって、acmeModerationBundleでは、spoop接続を使用します。Acme \ ModerationBundle\Formに次のようなフォームタイプがあります。

    class ModerationAnnonceForm extends AbstractType{
        public function buildForm(FormBuilder $builder, array $options)
        {
            $builder
            ->add('descAnnonce')
            ->add('idRubrique','entity',array(
                    'class' => 'AcmeModerationBundle:TRubrique',
                    'expanded'=>true,
                    'multiple' =>false,
            ));
        }
        public function getDefaultOptions(array $options)
        {
            return array(
                'data_class' => 'Acme\ModerationBundle\Entity\TAnnonces',
            );
        }
        public function getName()
        {
            return 'acme_moderationbundle_annonceform';
        }
    }

AcmeModerationBundle:TRubriqueは、適切な場所(Acme / Moderationbundle / Entity / TRubrique)で定義されています。このフォームを生成しようとすると、常に次のようになります。不明なエンティティの名前空間エイリアス「AcmeModerationBundle」。ログを見てみると、

    at ORMException ::unknownEntityNamespace ('AcmeModerationBundle')
    in D:\workspace\symfony_bannieres\vendor\doctrine\lib\Doctrine\ORM\Configuration.php at line 174  -+
    at Configuration ->getEntityNamespace ('AcmeModerationBundle')
    in D:\workspace\symfony_bannieres\vendor\doctrine\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php at line 156  -+
    at ClassMetadataFactory ->getMetadataFor ('AcmeModerationBundle:TRubrique')
    in D:\workspace\symfony_bannieres\vendor\doctrine\lib\Doctrine\ORM\EntityManager.php at line 257  -+
    at EntityManager ->getClassMetadata ('AcmeModerationBundle:TRubrique')
    in D:\workspace\symfony_bannieres\vendor\symfony\src\Symfony\Bridge\Doctrine\Form\ChoiceList\EntityChoiceList.php at line 113  -+
    at EntityChoiceList ->__construct (object(EntityManager), 'AcmeModerationBundle:TRubrique', null, null, null)
    in D:\workspace\symfony_bannieres\vendor\symfony\src\Symfony\Bridge\Doctrine\Form\Type\EntityType.php at line 62  -+

    at EntityType ->getDefaultOptions (array('class' => 'AcmeModerationBundle:TRubrique', 'expanded' => true, 'multiple' => false, 'data' => null))
    in D:\workspace\symfony_bannieres\vendor\symfony\src\Symfony\Component\Form\FormFactory.php at line 234  -

デフォルトのエンティティマネージャーを使用していると思いますが、php app / console container:debugを確認します

    doctrine.orm.default_entity_manager           container Doctrine\ORM\EntityManager
    doctrine.orm.entity_manager                   n/a       alias for doctrine.orm.default_entity_manager
    doctrine.orm.spoop_entity_manager             container Doctrine\ORM\EntityManager

誰でも私に何が悪いのか教えてもらえますか?

4

2 に答える 2

1

コアフォルダー名なしでバンドル名を使用しようとしたときに、これがありました。config/security.yml にありました

私の場合のフォルダー構造は、次の src/Dp/UserBundle/.... です。

私はこのプロバイダを変更しました:

    main:
        entity: { class: UserBundle:User, property: username }`

この「プロバイダー:

    main:
        entity: { class: DpUserBundle:User, property: username }`

したがって、不明なエンティティ名の名前 (UserBundle 私の場合) をコピーし、プロジェクト内の各エントリを検索して確認します - それらはフォルダーのプレフィックス (私の場合は Dp) である必要があります

于 2013-08-08T10:23:41.757 に答える
1

エンティティ フィールド タイプは、emエンティティ マネージャを指定できるオプションを受け入れます

<?php

class ModerationAnnonceForm extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
        ->add('descAnnonce')
        ->add('idRubrique','entity',array(
                'class' => 'AcmeModerationBundle:TRubrique',
                'em' => 'spoop' // Add this
                'expanded'=>true,
                'multiple' =>false,
        ));
    }

    // ...
}
于 2012-07-06T17:00:23.647 に答える