2013-10-18 47 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有时可以解决问题。