2014-10-12 38 views
0

我是symfony(symfony2)的新手,所以我被要求安裝奏鳴曲管理員加上FOSUser束進行整合。一切都很順利,奏鳴曲管理員工作正常,fosuser的配置應該沒問題,就像在tuts中一樣。FOSUser包無法在命令行中創建用戶

當我去到我的終端和寫命令:

PHP應用程序/控制檯FOS:用戶:創建管理員[email protected]管理員

我得到這個錯誤

[Doctrine \ ORM \ ORMInvalidArgumentException]
類型爲'Sonata \ UserBundle \ Entity \ BaseUser'(admin)的給定實體沒有
標識/無標識值設置。它不能被添加到身份地圖。

我不知道該怎麼做這個錯誤。

+0

貴索納塔用戶繼承來自FOS用戶? – Fred 2014-10-12 13:39:05

+0

我想是的,這是從我的配置文件 fos_user: user_class:Sonata \ UserBundle \ Entity \ BaseUser – 2014-10-12 13:46:27

+0

不,這只是配置,告訴FOSUserBundle從哪裏採取用戶實體。我想我知道發生了什麼事。我會在答案中發佈代碼。 – Fred 2014-10-12 13:53:04

回答

2

我認爲問題在於FOSU​​serBundle期望具有Doctrine ID映射的實體。試試這個:

在你的包之一,創建自己的用戶等級:

<?php 

namespace YOUR\NAMESPACE\YourUserBundle\Entity; 

use Sonata\UserBundle\Entity\BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

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

    public function __construct() 
    { 
     parent::__construct(); 
    } 
} 
?> 

現在指向用戶類到新的實體:

fos_user: 
    user_class: YOUR\NAMESPACE\YourUserBundle\Entity\User 
4

感謝大家的幫助:)

在mr @fred回答後,我的一位朋友的幫助下,錯誤消失了,捆綁工作正常,下一步如果您遇到同樣的問題,我還有:

去的src /應用/索納塔/ UserBundle /實體/ user.php的 添加

public function __construct() { 
     parent::__construct(); 
    } 

然後去你的主config.yml,並將此:

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class:  Application\Sonata\UserBundle\Entity\User