Laravel 4 nicht finden Können BaseController von Namespaces controller
Ich versuche, die Struktur meines Laravel 4-site, so dass (1) die wichtigsten Gruppen von Anwendungen " Komponenten (Controller/views/etc) miteinander gekoppelt sind, und (2) Laravel ist die Unterstützung von code außerhalb der in meinem web-server-Dokument-root. Die Standard-laravel home-Seite lädt gut, aber ich kann nicht eine Namespace-controller, um die route richtig. Dies ist die relevante Datei-Struktur:
/ [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
Den Standard laravel landing-page ist der laden in Ordnung. Aber wenn ich versuchte, einrichten eines Controllers mit eigenem Namensraum, bekomme ich immer den Fehler.
Dies ist HomeController.php:
namespace PageTypes;
use Home\controllers;
class HomeController extends BaseController {
public function showWelcome()
{
return View::make('hello');
}
}
Hier routes.php:
<?php
Route::get('/', function()
{
return View::make('hello');
});
Route::get('/home', 'PageTypes\Home\controllers\HomeController@showWelcome' );
Dieses setup ergibt den Fehler: "Symfony \ Component \ Debug \ Exception \ FatalErrorException
Klasse 'Seitentypen\BaseController" nicht gefunden " Ok, laravel ist zu finden HomeController.php mindestens.
Viele andere SO Antworten, erzählte mir, zu ändern versuchen BaseController zu \BaseController. Machen, dass eine änderung und verlassen, alles andere das gleiche ergab den Fehler "ReflectionException: Klasse Seitentypen\Home\controllers\HomeController ist nicht vorhanden." Was das?... >.<
Ich bin etwas nicht zu verstehen an der Kreuzung von namespaces, psr-0, und laravel routing -, jede Hilfe wäre WIRKLICH zu schätzen.
Followup Fragen: (1) welche Schritte könnte ich noch haben, genommen zu haben gedebuggt dies? NGINX-Protokolle sind nicht wirklich erzählen mir etwas anderes als das, was ich sehe, in den Ausnahme-Fehler geworfen wird. (2) Hat jemand auf eine laravel Samen auf github lag das ähnlich? Ich hätte gerne etwas zu verweisen.
Hier meine Konfiguration Einstellungen:
//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"
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Grunde, weil Sie in einem namespace, die Sie lösen müssen, die BaseController in der global namespace (Das ist, was die
\
tut).Könnten Sie auch mit
Aber da sind Sie nur gehen, um sich auf BaseController einmal in die gesamte Steuerung gibt es nicht viel Punkt.
Die andere mögliche problem ist Ihre Verwendung von Namensräumen das ist, was
PageTypes\Home\controllers\HomeController
bezieht. Das ist eigentlich nicht der Pfadname, das den namespace-Namen sucht (es passiert einfach so, dass die Autoloader, die Folgen PSR-match die Verzeichnis-Struktur den namespaces).Versuchen Sie es mit
statt nur
PageTypes
class HomeController extends \BaseController {
ergab den Fehler "Klasse Seitentypen\Home\controllers\HomeController ist nicht vorhanden." Hinzufügen der call (use \BaseController
) ergab den gleichen Fehler. Ich habe auch versucht, meine namespace-Deklarationnamespace PageTypes\Home
und immer noch den gleichen Fehler.composer update
? Können Sie bitte den Inhalt Ihresvendor/composer/autoload_namespaces.php