2015-11-05 103 views
1

我搜索的時間來解決我的問題,但現在我只是不知道什麼檢查了..供應商捆綁加載失敗

我創建了作曲家一個新項目:https://github.com/Gcob/esvit-ng-table-for-symfony

一切罰款,直到談到appKernel.php,我declarate我的新從這樣的作曲家束新鮮下載:new Gcob\NgTableBundle\GcobNgTableBundle(),但我得到了一個錯誤信息:

ClassNotFoundException in AppKernel.php line 23: 

Attempted to load class "GcobNgTableBundle" from namespace "Gcob\NgTableBundle". 
Did you forget a "use" statement for another namespace? 

我不exacly知道appKernel如何認定其捆綁,但我知道命名空間是重要的和文件名也是如此,所以我的文件GcobNgTableBundle.php有命名空間namespace Gcob\NgTableBundle;和類聲明是class GcobNgTableBundle extends Bundle它應該是。

有什麼地方我應該告訴內核文件GcobNgTableBundle.php存在供應商捆綁?如果有人有任何想法,請告訴我,但不要忘記,我嘗試了很多東西(第一次問問題o_0)

+0

順便說一句,去github上檢查回購,如果你想要的源代碼或下載它來測試... – user3504263

+0

您的composer.json文件有NgTableBundle重複。 – Cerad

+0

它看起來像'composer.json'文件設置錯誤。 '「psr-4」:{「Gcob \\ NgTableBundle \\ GcobNgTableBundle \\」:「」}'將意味着根名稱空間將是'Gcob \ NgTableBundle \ GcobNgTableBundle',但它目前被設置爲'Gcob \ NgTableBundle'。最好的辦法是分叉它,修復它(可能會根據你的感覺提交一個請求或問題)並使用你的分支,直到問題得到糾正。 – qooplmao

回答

0

經過大量的浪費時間,我明白了:P mim的答案是朝着好的方向發展!我學會了here作曲家的名字空間是如何工作的。 Symfony中的appKernel只加載作曲文件"vendor/composer/autoload_namespaces.php"來加載FAKE命名空間xD。

0

您需要更改您的作曲家並添加一個自動載入部分。如果沒有它,名稱空間可能會失敗。有關詳細信息,請檢查documentation。 它必須與此類似:例如

"autoload": { 
    "psr-4": { "Symfony\\Bundle\\EsvitNgTableBundle\\": "" } 
}, 

檢查this one

+0

對不起,但沒有接近要求。 – Cerad

+0

我不確定composer.json和appKernel xD之間有什麼關係,但是我試過了,而且我已經閱讀了文檔而沒有成功,因爲它只是最佳實踐的指示......無論如何,它不起作用即使你發佈的代碼..但thx嘗試! – user3504263