2017-08-02 59 views
1

我使用ZF2和學說,我已經配置module.config.php這樣類「登錄實體用戶」鏈配置的命名空間實體

return array(
'doctrine' => array(
    'driver' => array(
     __NAMESPACE__. '_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity') 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__.'\Entity' => __NAMESPACE__.'_driver' 
      ) 
     ) 
    ) 
), 

,並沒有發現我的的LoginController

class LoginController extends AbstractRestfulController { 

    public function indexAction() { 

     $em = $this->getServiceLocator()-> get('Doctrine\ORM\EntityManager'); 
     $usr = new User(); 
     $usr->setUsername('yassine'); 
     $usr->setPassword('yassine'); 
     $usr->setEmail('[email protected]'); 
     $em->persist($usr); 
     $em->flush(); } } 

和我的類的用戶/登錄/實體/用戶

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="user") 
*/ 
class User 
{ 
/** 
* @ORM\Id 
* @ORM\GeneratedValue 
* @ORM\Column(name="id") 
*/ 
protected $id; 

/** 
* @ORM\Column(name="username") 
*/ 
protected $username; 

/** 
* @ORM\Column(name="password") 
*/ 
protected $password; 

/** 
* @ORM\Column(name="email") 
*/ 
protected $email; 

    // Returns ID of the user 
public function getId() 
{ 
    return $this->id; 
} 

// Sets ID of the user. 
public function setId($id) 
{ 
    $this->id = $id; 
} 

// Returns username. 
public function getUsername() 
{ 
    return $this->username; 
} 

// Sets username. 
public function setUsername($username) 
{ 
    $this->username = $username; 
} 

// Returns password. 
public function getPassword() 
{ 
    return $this->password; 
} 

// Sets Password. 
public function setPassword($password) 
{ 
    $this->password = $password; 
} 

// Sets email. 
public function setEmail($email) 
{ 
    $this->email = $email; 
} 

// Returns email. 
public function getEmail() 
{ 
    return $this->email; 
} 

}

,它顯示我此消息映射異常問題:

類「登錄\實體\用戶」鏈配置的命名空間沒有被發現\實體

+0

在'module.config.php'文件中是否有類似'namespace Login;'的東西? – gsc

回答

0

看來__NAMESPACE__是空的你module.config.php和這就是爲什麼學說見下表:

'drivers' => [ 
    '\Entity' => '_driver' 
] 

代替:

'drivers' => [ 
    'Login\Entity' => 'Login_driver' 
] 

要解決此問題,您必須聲明namespace用於module.config.php。換句話說,把以下內容:

namespace Login; 

在文件的頂部,在PHP開始標記後。

另一種解決方案是用'Login'字符串替換所有發生的__NAMESPACE__

相關問題