2012-12-14 56 views
3

我正在用Symfony 2.1製作一個客戶案例管理系統,而且我偶然發現了我無法解決的奇怪問題。出於某種原因,當我做的showAction與CustomerCaseController,我得到以下錯誤:Symfony2類UserInterface不存在

"Class HSW\AshaBundle\Entity\UserInterface does not exist"
500 Internal Server Error

我不知道該應用程序的一部分,要求接口。 如果我創建一個空的UserInterface.php課程,問題消失並且一切正常。爲什麼showAction需要UserInterface

我已經縮小以某種方式涉及到這一塊的代碼在showController問題:

$customercase = $this->getDoctrine() ->getRepository('HSWAshaBundle:CustomerCase') ->find($id); 

我有以下實體:

  • User(用於登錄,提交例)
  • Customer(客戶)
  • CustomerCase(案例)。

CustomerCase有下列方式與CustomerUser實體多對一關係:

// SRC/HSW/AshaBundle /實體/ CustomerCase.php 命名空間HSW \ AshaBundle \實體;

use Doctrine\ORM\Mapping as ORM; 
use Gedmo\Mapping\Annotation as Gedmo; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* CustomerCase 
* 
* @ORM\Table(name="hsw_customerCase") 
* @ORM\Entity 
* @Gedmo\Loggable 
* @Gedmo\SoftDeleteable(fieldName="deletedAt") 
*/ 
class CustomerCase 
{ 

/** 
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="customerCases") 
* @ORM\JoinColumn(name="customer_id", referencedColumnName="id", nullable=false) 
*/ 
protected $customer; 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="createdCustomerCases") 
* @ORM\JoinColumn(name="creator_id", referencedColumnName="id", nullable=false) 
*/ 
protected $creator; 

/** 
* @ORM\ManyToOne(targetEntity="User", inversedBy="holdingCustomerCases") 
* @ORM\JoinColumn(name="holder_id", referencedColumnName="id", nullable=false) 
*/ 
protected $holder; 
.....etc.... 

// SRC/HSW/AshaBundle /實體/ CustomerCase.php 命名空間HSW \ AshaBundle \實體;

use Symfony\Component\Security\Core\User\EquatableInterface; 
use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Security\Core\User\AdvancedUserInterface; 
use Doctrine\Common\Collections\ArrayCollection; 

/** 
* HSW\AshaBundle\Entity\User 
* 
* @ORM\Table(name="hsw_users") 
* @ORM\Entity(repositoryClass="HSW\AshaBundle\Entity\UserRepository") 
*/ 

class User implements AdvancedUserInterface 
{ 
.....etc.... 

與用戶實體的關係是否會影響到這個?這是我看到的CustomerCase.php和​​3210(其中showAction沒有UserInterface)之間唯一可見的差異。

有人可以幫我調試這種行爲嗎?僅僅因爲Symfony需要是(出於未知原因)纔有空類UserInterface

+0

您是否可以編輯您的文章並在CustomerCase和用戶實體中顯示您的名稱空間聲明和使用語句? – Mike

+0

感謝邁克,我只是爲兩個實體添加了開始部分。我正在使用AdvancedUserInterface進行登錄(以允許使用電子郵件登錄)。難道這是造成這些問題的原因嗎? – user1903831

回答

0

我猜你沒有進口UserInterface的命名空間到你的用戶類(我猜這是一個用戶類,因爲你沒有提到它):閱讀PHP namespaces in the official docs

use Symfony\Component\Security\Core\User\UserInterface; 

class User implements UserInterface 
{ 
} 

+1

嗨Jakub,非常感謝你!這實際上似乎解決了這種情況。我有點懷疑,因爲我的用戶類沒有直接實現UserInterface(它使用AdvancedUserInterface)。我仍然對引發這一特定問題的原因感到困惑?我完全可以在不導入UserInterface名稱空間的情況下爲CustomerCase創建一個登錄/註銷的createAction。 – user1903831

相關問題