FOSUserBundle 未定义方法 getName();

FOSUserBundle undefined method getName();

我是第一次尝试安装 FOSUserBundle。按照步骤操作后,我尝试执行 php app/console doctrine:schema:update --force。这给了我以下错误。我不明白为什么它要查找 getName(),在线示例中的捆绑包中未显示它。

   PHP Fatal error:  Call to undefined method  music\userBundle\userBundle::getName() in /home/me/public_html/music/app/bootstrap.php.cache on line 2505

我的包:

<?php
// src/userBundle/Entity/User.php

namespace userBundle\Entity;

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

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

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

}

您的应用程序的根目录似乎被解释为命名空间。

错误输出显示 music\userBundle::getName(),但对您的实体名称调用 getName() 应该是 userBundle\User::getName() .

我认为您必须使用以下 class 架构重新构建您的应用程序:

YourNamespace\UserBundle

所以,你的实体应该变成

YourNamespace\UserBundle\Entity\User 

YourNamespaceUserBundle::User

如果可以,post 你的 config.yml 和 security.yml 文件

首先,您需要确保将您的包包含在 AppKernel.php 中,还应检查您的命名空间,在最佳实践中,您的命名空间应包含供应商名称、包名称、到 [=22= 的目录],所以你应该考虑将你的命名空间设置成这样:

namespace music\userBundle\Entity;

因为现在看来你做错了什么:

music\userBundle\userBundle::getName()

namespace userBundle\Entity;

并且在安装新包之后(或在任何重要更改之后)不要忘记通过 cli 命令或手动清除您。试试这个,如果它没有帮助,那么我们将更深入地了解您的项目结构。

抱歉,似乎将 userBundle 命名为错误,因为按照我手动完成的视频教程,忘记了扩展部分。

 namespace music\userBundle;

  use Symfony\Component\HttpKernel\Bundle\Bundle;

   class userBundle extends Bundle
  {
  }