2013-05-28 113 views
0

我想在symfony2中實現一個自定義存儲庫類,並且我希望它擴展EntityRepository類。我無法將獲取的參數傳遞給父項(即EntityRepository)構造函數。這是父類的構造的signiture:symfony2自定義存儲庫擴展EntityRepository

public function __construct($em, Mapping\ClassMetadata $class) 

所以我不得不把它添加到我的services.yml文件,以獲取參數:

parameters: 
    user_provider.class: Untitled\F5Bundle\Security\UserRepository 

services: 
    user_meta_data: 
     class: Doctrine\ORM\Mapping\ClassMetaData 
     arguments: 
      name: "Untitled\F5Bundle\Entity\User" 
    user_provider: 
     class: "%user_provider.class%" 
     arguments: 
      entityManager: "@doctrine.orm.entity_manager" 
      meta_data: "@user_meta_data" 

而且我還加了註釋標籤我User類(我不知道它是否必要)

現在,當我運行它時,它會引發一個錯誤。有消息稱:

FatalErrorException: Error: Class 'Doctrine\ORM\Mapping\ClassMetaData' not found 
in /mnt/data/Projects/F5/app/cache/dev/appDevDebugProjectContainer.php line 2749 

/mnt/data/Projects/F5/是我保持代碼)

我不明白這一點。這裏有什麼問題?我究竟做錯了什麼?

回答

1

元數據通過MetadataFactory獲取。作爲一個例子,你可以看到它在EntityManager中的工作原理。

public function getClassMetadata($className) 
{ 
    return $this->metadataFactory->getMetadataFor($className); 
} 

您也可以將您的存儲庫檢索爲服務。看看這個question

0

你錯過鍵入類名「ClassMetaData」應該是ClassMetadata

class: Doctrine\ORM\Mapping\ClassMetadata