我正在尝试构建我的Laravel 4站点,以便(1)主要应用程序组的组件(控制器/视图/等)耦合在一起,以及(2)Laravel在我的Web服务器的文档根目录之外的支持代码.默认的laravel主页加载正常,但我无法让命名空间控制器正确路由.这是相关的文件结构:
/ [Project Root]
/laravel [full laravel install here]
composer.json
/app
/controllers
BaseController.php
/dev
/htdocs
index.php
/app
/PageTypes
/Home
/controllers
HomeController.php
/views
HomeView.blade.php
Run Code Online (Sandbox Code Playgroud)
默认的laravel登陆页面正在加载正常.但是当我尝试使用自己的命名空间设置控制器时,我不断收到错误.
这是HomeController.php:
namespace PageTypes;
use Home\controllers;
class HomeController extends BaseController {
public function showWelcome()
{
return View::make('hello');
}
}
Run Code Online (Sandbox Code Playgroud)
这是routes.php:
<?php
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/home', 'PageTypes\Home\controllers\HomeController@showWelcome' );
Run Code Online (Sandbox Code Playgroud)
此设置产生错误:"Symfony\Component\Debug\Exception\FatalErrorException Class'PageTypes\BaseController'not found"好吧,laravel至少找到HomeController.php.
很多其他SO响应告诉我尝试将BaseController更改为\ BaseController.进行一次更改并使其他所有内容保持不变会产生错误"ReflectionException:Class PageTypes\Home\controllers\HomeController不存在." 什么?...>.<
我不了解命名空间,psr-0和laravel路由的交叉点,任何帮助都会非常感激.
后续问题:(1)我可以采取哪些步骤进行调试?除了抛出的异常错误之外,NGINX的日志并没有真正告诉我任何其他内容.(2)有没有人在github上遇到类似的laravel种子?我很乐意参考.
以下是我的配置设置:
// index.php
...
require __DIR__.'/../../laravel/bootstrap/autoload.php';
$app = require_once __DIR__.'/../../laravel/bootstrap/start.php';
...
// bootstrap/autoload.php …Run Code Online (Sandbox Code Playgroud)