Ich bin neu bei Laravel. Um meine App organisiert zu halten, möchte ich meine Controller in Unterordnern des Controller-Ordners ablegen.
controllers\
---- folder1
---- folder2
Ich habe versucht, zu einem Controller zu routen, aber Laravel findet ihn nicht.
Route::get('/product/dashboard', 'folder1.MakeDashboardController@showDashboard');
Was mache ich falsch?
php artisan make:controller test\TestController
erstellt testTestController.php währendphp artisan make:controller 'test\TestController'
funktioniert. (Beachten Sie die Zitate) - Laravel 5.4php artisan make:controller test/TestController
Fügen Sie Ihre Controller in Ihren Ordnern hinzu:
Erstellen Sie Ihre Route ohne Angabe des Ordners:
Lauf
Und versuche es erneut
quelle
artisan dump-autoload
auch oder istcomposer dump-autoload
genug?ClassLoader::addDirectories
Sie nicht als Komponist haben, brauchen Sie auch Handwerker.composer dump-autoload
arbeite auch für mich. Wenn Sie ein Windows-Betriebssystem verwenden, können Siecomposer dump-autoload
stattdessen eine .bat-Datei verwenden, um CMD einzugeben. Dies ist, was ich benutze:PUSHD "E:\path\to\non-public" newline START /B "Window 1" composer dump-autoload newline pause
Für Benutzer von Laravel 5 müssen Sie den Namespace für den Controller im Unterverzeichnis festlegen (Laravel 5 befindet sich noch in der Entwicklung und Änderungen werden täglich vorgenommen.)
So erhalten Sie eine Ordnerstruktur wie:
Namespace Admin \ PostsController.php Datei wie folgt:
Dann ist Ihre Route dafür:
Und schließlich sollten Sie weder Komponisten noch Handwerker entlassen
oder
quelle
App\Http\Controllers\Auth\Controller
nicht gefunden. Warum wird das WortController
dort angehängt und der tatsächliche Name des Controllers verloren? Ich denke, es ist der Schrägstrich, der das macht.-o
hat nicht geholfen.Für ** Laravel 5 oder Laravel 5.1 LTS beide ** ist
Route::group
es sehr hilfreich , wenn Sie mehrere Controller im Admin-Ordner haben . Beispielsweise:Update : Funktioniert mit Laravel 5.4
Meine Ordnerstruktur:
PostAPIController:
In My Route.php setze ich
namespace
group aufApi\V1
und insgesamt sieht es so aus:Informationen zum Verschieben von Unterordnern finden Sie unter diesem Link .
quelle
1.Erstellen Sie Ihren Unterordner wie folgt:
2.Konfigurieren Sie Ihren Code in app / route.php
3.Schreibe etw in app / controller / admin / IndexController.php, zB:
4. Greifen Sie auf Ihre Site zu, z. B.: localhost / admin / test. Auf der Seite wird "admin.home" angezeigt
ps: Bitte ignoriere mein schlechtes Englisch
quelle
Ich habe gerade einen Weg gefunden, wie es geht:
Fügen Sie einfach die Pfade zur Datei /app/start/global.php hinzu
quelle
Hier ist admin das Unterverzeichnis unter app / Http / Controllers und CategoryController ist der Controller, den Sie im Verzeichnis erstellen möchten
quelle
In Laravel 5.6 lautet der Name Ihres Unterordners wie folgt
Api
:In Ihrem Controller benötigen Sie diese beiden Zeilen:
Und in Ihrer Routendatei
api.php
benötigen Sie:quelle
Ich benutze Laravel 4.2. So mache ich das:
Ich habe eine Verzeichnisstruktur wie diese:
app
--controllers
---- admin
------ AdminController.php
Nachdem ich den Controller erstellt habe, habe ich in der Datei composer.json den Pfad zum neuen Administratorverzeichnis eingegeben:
Als nächstes bin ich gelaufen
und dann
Dann habe ich in der route.php den Controller wie folgt aufgenommen:
Und alles funktioniert gut.
quelle
1) So können Sie Ihre App organisieren:
Jede Routendatei (
web.php
,api.php
...) wird in einermap()
Methode in einer Datei deklariertWenn Sie eine Routendatei zuordnen, die Sie
->namespace($this->namespace)
für diese festlegen können, wird sie dort unter Beispielen angezeigt.Dies bedeutet, dass Sie mehr Dateien erstellen können, um Ihr Projekt strukturierter zu gestalten!
Und legen Sie für jeden unterschiedliche Namespaces fest.
Aber ich bevorzuge Set
empty string
für den Namespace""
2) Sie können Ihre Controller so einstellen, dass sie auf native PHP-Weise routen. Siehe Beispiel:
Jetzt können Sie in Ihrer IDE auf Ihre Controller-Namen doppelklicken, um schnell und bequem dorthin zu gelangen.
quelle
Wenn Sie Laravel 5.3 oder höher verwenden, müssen Sie nicht so komplex sein, wie andere Antworten bereits sagten. Verwenden Sie einfach den Standardbefehl handwerker, um einen neuen Controller zu generieren. Zum Beispiel, wenn ich einen
User
Controller imUser
Ordner erstellen möchte . Ich würde tippenIn Routen,
Genau dies zu tun wäre in Ordnung und jetzt befindet sich auf localhost / dashboard die Seite.
Hoffe das hilft.
quelle
Ich denke, um Controller für Admin und Front in separaten Ordnern zu halten, wird der Namespace gut funktionieren.
Bitte schauen Sie sich die unten stehende Laravel-Verzeichnisstruktur an, die für mich gut funktioniert.
Die Routen in der Datei "route / web.php" lauten wie folgt
Und für den Admin-Bereich wird es so aussehen
Hoffe das hilft!!
quelle
Ich hatte dieses Problem kürzlich mit Laravel 5.8, aber ich verstehe, dass ich den Controller wie folgt richtig definieren sollte:
So nicht:
Dann können Sie in routen / web.php wie folgt auf den Controller zugreifen:
quelle