【问题标题】:symfony+Mapping errorsymfony+映射错误
【发布时间】:2014-11-06 18:51:11
【问题描述】:

我正在我的 symfony 中实现 FOSUser 模块,我已经创建并配置了所有文件作为教程。这是我用于映射的 config.yml 文件。

 namespace Acme\UserBundle\Entity;

 use FOS\UserBundle\Entity\User as BaseUser;
 use Doctrine\ORM\Mapping as ORM;


 class User extends BaseUser
 {

protected $id;

public function __construct()
{
    parent::__construct();
    // your own logic
}
}

它显示以下错误..

 MappingException: The class 'Acme\UserBundle\Entity\User' 
was not found in the chain configured namespaces FOS\UserBundle\Entity

这是我的 config.yml 文件,我在其中提到了自动加载。还是不行。

      imports:
- { resource: parameters.yml }
- { resource: security.yml }

  framework:
 #esi:             ~
 #translator:      { fallback: %locale% }
 secret:          %secret%
 router:
    resource: "%kernel.root_dir%/config/routing.yml"
    strict_requirements: %kernel.debug%
form:            ~
csrf_protection: ~
validation:      { enable_annotations: true }
templating:
    engines: ['twig']
    #assets_version: SomeVersionScheme
default_locale:  "%locale%"
trusted_proxies: ~
session:         ~
fragments:       ~

# Twig Configuration
twig:
debug:            %kernel.debug%
strict_variables: %kernel.debug%

 # Assetic Configuration
 assetic:
debug:          %kernel.debug%
use_controller: false
bundles:        [ ]
#java: /usr/bin/java
filters:
    cssrewrite: ~
    #closure:
    #    jar: %kernel.root_dir%/Resources/java/compiler.jar
    #yui_css:
    #    jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar

  # Doctrine Configuration
doctrine:
dbal:
    driver:   %database_driver%
    host:     %database_host%
    port:     %database_port%
    dbname:   %database_name%
    user:     %database_user%
    password: %database_password%
    charset:  UTF8
    # if using pdo_sqlite as your database driver, add the path in parameters.yml
    # e.g. database_path: %kernel.root_dir%/data/data.db3
    # path:     %database_path%

orm:
    auto_generate_proxy_classes: %kernel.debug%
    auto_mapping: true

# Swiftmailer Configuration
swiftmailer:
transport: %mailer_transport%
host:      %mailer_host%
username:  %mailer_user%
password:  %mailer_password%
spool:     { type: memory }
fos_user:
db_driver: orm 
firewall_name: main
user_class: Acme\UserBundle\Entity\User

【问题讨论】:

  • 对不起哥们,不是根据堆栈溢出的缩进,但重要的是我会得到错误。谢谢

标签: symfony symfony-2.1 symfony-2.2


【解决方案1】:

好的,这应该很容易。您需要在 config.yml 中启用 auto_mapping 或在此处手动指定“AcmeUserBundle:~”:

1) 使用自动映射

doctrine:
    orm:
        auto_mapping: true

2) 没有自动映射

doctrine:
    orm:     
        mappings:
            AcmeUserBundle: ~

请注意,如果您有多个实体管理器,您将无法使用auto_mapping 功能。 希望这会有所帮助!

【讨论】:

  • 这是我的confing.yml,请看一下
  • 我提到了 auto loding: true 但仍有一些错误出现
  • 啊,所以你确实启用了auto_mapping。您可以尝试将其关闭并手动添加这些捆绑包吗?不要忘记添加FOSUserBundle
  • 按照您所说的进行更改后得到新错误“MappingException:“FOS\UserBundle\Entity\User”的类“Acme\UserBundle\Entity\User”子类不是有效实体或映射的超类。”
  • 我假设您已经设法解决了一个问题。能写出是什么原因吗? :)
【解决方案2】:

它也可以帮助:

添加到你的 app/AppKernel.php:

...
new Acme\UserBundle\AcmeUserBundle(),
...

【讨论】:

  • 是的!我遇到了同样的问题。我刚刚为我正在做的游戏(王朝的皇帝)创建了一个全新的包,我将 User 类定位在 namespace Xmontero\Emperors\UserBundle\Entity; 下,但是按照教程,我专注于将 FOSUserBundle 添加到内核中,我完全忘记将我的new Xmontero\Emperors\UserBundle\XmonteroEmperorsUserBundle(), 添加到AppKernel.php - 使用 SF2 工作了 3 年,忘记了这样的事情!哦,伙计!不可能!!!
【解决方案3】:

将以下行添加到您的 app/AppKernel.php 文件的捆绑数组中:

new FOS\UserBundle\FOSUserBundle()

这是为 Symfony 注册该命名空间。

【讨论】:

    【解决方案4】:

    我的解决方案:

    ../Entity/User.php 中的更改

    命名空间 Acme\UserBundle\Entity;带有命名空间 Acme\Bundle\UserBundle\Entity;

    并在 app/config.yml 中更改

    user_class: Acme\UserBundle\Entity\User with
    用户类:Acme\Bundle\UserBundle\Entity\User

    问候,阿米克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多