2015-08-15 74 views
1

我想第一次安装FOSUserBundle。按照下面的步骤,我尝试执行php app/console doctrine:schema:update --force。这给了我以下错误。我不明白为什么它寻找getName(),它没有在网上的例子中显示在捆绑。FOSUserBundle未定义的方法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 
    } 

} 
+0

此外,尝试清除缓存手动删除''中的应用程序/ cache' dev'和'prod'文件夹 –

+0

你能证明你的'音乐\ userBundle \ userBundle'类的内容? –

回答

3

看来你的应用程序的根目录中被解释为命名空间。

错误输出说音乐\ userBundle ::的getName(),但在你的实体名称调用的getName()应该是userBundle \用户::的getName()

我认为你必须使用以下级架构上重新构建应用程序:

YourNamespace\UserBundle 

所以,你的实体应该成为

YourNamespace\UserBundle\Entity\User 

YourNamespaceUserBundle::User 

如果您可以,发布你的config.yml和security.yml文件

1

首先,您需要确保在AppKernel.php中包含您的软件包,在最佳实践中您的名称空间应该包含供应商名称,软件包名称,目录类,因此您应该考虑设置您的名称空间对这样的事情:

namespace music\userBundle\Entity; 

因为现在它看起来像你做了错事:

music\userBundle\userBundle::getName() 

namespace userBundle\Entity; 

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

0

对不起,似乎命名为userBundle错误,因为下面的视频教程我手动完成,并忘记了延伸部分。

namespace music\userBundle; 

    use Symfony\Component\HttpKernel\Bundle\Bundle; 

    class userBundle extends Bundle 
    { 
    }