(1) 主要なアプリケーション グループのコンポーネント (コントローラー/ビュー/など) が結合され、(2) Laravel のサポート コードが Web サーバーのドキュメント ルートの外にあるように、Laravel 4 サイトを構築しようとしています。デフォルトの 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" OK、laravel は少なくとも HomeController.php を見つけています。
他の多くの SO 応答から、BaseController を \BaseController に変更してみるように言われました。その 1 つの変更を行い、他のすべてを同じままにすると、「ReflectionException: クラス 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"
}