我正在尝试构建我的 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
默认的 laravel 登陆页面加载正常。但是当我尝试使用自己的命名空间设置控制器时,我不断收到错误消息。
这是HomeController.php:
namespace PageTypes;
use Home\controllers;
class HomeController extends BaseController {
public function showWelcome()
{
return View::make('hello');
}
}
这是routes.php:
<?php
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/home', 'PageTypes\Home\controllers\HomeController@showWelcome' );
此设置会产生错误:“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
...
require __DIR__.'/../vendor/autoload.php';
...
// bootstrap/paths.php
...
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../../dev/htdocs/',
'base' => __DIR__.'/..',
'storage' => __DIR__.'/../app/storage',
...
// compose.json
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"require": {
"laravel/framework": "4.0.*"
},
"autoload": {
"psr-0": {
"PageTypes": "../dev/htdocs/app"
},
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan optimize"
],
"pre-update-cmd": [
"php artisan clear-compiled"
],
"post-update-cmd": [
"php artisan optimize"
],
"post-create-project-cmd": [
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
},
"minimum-stability": "dev"
}