2013-10-18 91 views
2

背景擴展應用控制器Laravel 4 - 從包裝

我知道我想要做聽起來有點不對勁,但我有我的理由。 基本上,我有一箇中央核心應用程序,這是一個默認的laravel應用程序,帶有一些調整和樣板代碼,然後我開發了一系列可用於通過作曲程序擴展應用程序的軟件包。如果沒有核心框架,這些軟件包就無法運行,因此完全可以預見它的依賴性。

我想做

我想要做的就是在我的核心應用一個BaseController並在我的包各種控制器擴展這個BaseController遍及各個模塊封裝提供通用的功能是什麼。

我期待能夠在基本控制器放置在app/controllers/BaseController.php ,然後使用從我的包擴展它:

class PackageController extends \BaseController{} 

不幸的是我做到這一點時,它看起來還是包(目前workbenched)的內控制器和我得到的錯誤:

include(/var/www/l4core.dev/workbench/myvendor/mypackage/src/controllers/BaseController.php): failed to open stream: No such file or directory

誰能告訴我我在做什麼錯在這裏。我正在尋找一個解決方案,使我可以輕鬆地在供應商目錄和工作臺之間移動我的包以進行開發。任何幫助非常感謝

更新

出現前面提到的錯誤信息是由於我的包/vendor/composer/classloader.php的包括 - 現在我已經刪除了供應商目錄,並做了新的作曲家安裝。這並沒有解決問題,但它至少已經轉向它,因爲我現在得到了以下錯誤消息:

Class 'BaseController' not found

我的包composer.json

{ 
    "name": "modules/sesame", 
    "description": "", 
    "authors": [ 
     { 
      "name": "any", 
      "email": "" 
     } 
    ], 
    "require": { 
     "php": ">=5.4.0", 
     "illuminate/support": "4.0.x", 
     "zizaco/confide": "dev-master", 
     "zizaco/entrust": "dev-master", 
     "conarwelsh/mustache-l4": "dev-master" 
    }, 
    "autoload": { 
     "classmap": [ 
      "src/controllers", 
      "src/models", 
      "src/migrations", 
      "src/seeds" 
     ], 
     "psr-0": { 
      "Modules\\Sesame": "src/" 
     } 
    }, 
    "minimum-stability": "dev" 
} 
+0

真的很奇怪,你有一個「包含」錯誤,通常它是一個「未找到類」。你能給我們一個你的包composer.json文件的片段嗎? – FR6

+0

@ FR6感謝您的關注 - 我已經添加了包的composer.json。 – WebweaverD

+0

你說,你把'BaseController'放在'app'目錄=>'app/BaseController.php'中。我不確定自動加載只能從'app'目錄中運行,請嘗試將控制器放置到'app/controllers'或其他包含在自動加載中的文件夾中。 – Andreyco

回答

2

一定要執行:

php artisan dump-autoload 

並驗證您的類BaseController是否在/vendor/composer/autoload_classmap.php

或者像OP所述,刪除vendor目錄並再次運行composer install有時可以解決問題。