2014-03-25 24 views
1

在我的文件夾「/供應商/用戶/管理員」我創建了一個新的自定義類(Adminuser.php)的Symfony沒有找到一個自定義

namespace \User\Admin; 
class Adminuser { 
    public $username; 
    public $password;  
} 

現在我試着在控制器中使用它:

namespace Section\AdminBundle\Controller; 
use \User\Admin; 
class DefaultController extends Controller 
{ 
    public function indexAction() 
    { 
     $AdminUser = new \User\Admin\Adminuser(); // CLASS NOT FOUND!! 
     ....... 

爲什麼會發生這種情況?命名空間是錯誤的? (我嘗試了幾個選項..) 我很抱歉與Symfony,抱歉。

+1

第一個猜測:你不應該在'use'和'namespace'語句中用'\'作爲名字空間的前綴 –

+0

我試圖刪除它們,但仍然是這個問題,謝謝 –

+0

用戶類應該放在AdminBundle下的某處,而不是供應商目錄。 – Cerad

回答

1

你有2個主要問題。

第一

申報時,你不應該用\

namespace \User\Admin; 

應該只是開始命名空間:

namespace User\Admin; 

第二

如果你想讓這些類生存在你的供應商目錄中,那麼你需要確保類正確地被symfony自動加載。要做到這一點,我們將使用作曲家。

在你composer.json你將要改變從本節:

"autoload": { 
    "psr-0": { "": "src/" } 
}, 

TO:

"autoload": { 
    "psr-0": { "": "src/" }, 
    "psr-0": { "": "vendor/User/Admin" } 
}, 

然後作曲家將這個文件夾下添加類可用的名字空間,你會能夠按預期訪問它。

1

只是刪除名稱空間中的第一個「\」,如註釋所述。所以第一個文件是: namespace User \ Admin; class Adminuser { public $ username; public $ password;
} 如果問題仍然存在,請檢查您的自動加載的配置,也許正確的方式將使用SRC DIR發展你的代碼,而不是供應商:S