Routing-Definition im Multianwendungsmodus der offiziellen Version von ThinkPHP6..0.2
吾逍遥
吾逍遥 2020-02-24 18:14:46
0
0
1765

Ich habe die RESTFul-API des WeChat-Applets bereits mit dem Framework ThinkPHP5.0.24 entwickelt. Kürzlich möchte ich auf ThinkPHP6.0.2 aktualisieren. Die Verzeichnisstruktur ist: --app --api --controller --v1 --Index .php-Version Es kann auch direkt in die Route im folgenden Format geschrieben werden: Route::get('api/:version/home','api/:version.Index/home'); was in ThinkPHP6 nicht mehr unterstützt wird .0.2 finden Sie unter https://blog.csdn.net/qq_35422558/article/details/100563723. Erstellen Sie in diesem Artikel einen API-Ordner unter der Routendatei im Stammverzeichnis der Website. Unten finden Sie eine route.php Routing-Datei mit einer Struktur wie --route --api -- route.php app.php--verdor schreibt Route::get('api/:version/home','api/:version.Index/home') in apiroute.php. [b]Ungültig nach dem Test[/b].
Durch die Konsultation des ThinkPHP6-Entwicklungshandbuchs wurde deutlich darauf hingewiesen, dass Routing-Adressen keine Module/Controller/Operationen mehr unterstützen, aber weiterhin Controller/Operationen oder Klassenmethoden unterstützen. Es gibt also drei Lösungen. Die erste: Die in der Klasse definierte Methode kann als Route::get(':version/home','appapicontroller:versionindex@home') geschrieben werden. Die Zugriffs-URL lautet http://localhost/[b]api[/b]/v1/home. Die Routendefinition unter der Anwendung sollte den Anwendungsnamen hinzufügen. Wenn er in routeapp.php geschrieben ist, lautet die Zugriffs-URL http://localhost/v1/home. Denken Sie daran, nichts Zusätzliches hinzuzufügen.
Zweiter Typ: Die Definition des Controllers/Betriebs kann nur in das Anwendungsverzeichnis routeroute.php geschrieben werden. Nach dem Testen kann der Dateiname route.php beliebig definiert werden. Es kann nicht in routeapiroute.php definiert werden und der Test ist ungültig. Route::get(':version/home',:version.Index/home') entfernt den Anwendungsnamensteil bei der Definition und fügt ihn beim Zugriff auf die URL hinzu, d. h. http://localhost/api/v1/ home
Dritter Typ: Mehrstufiger Controller im Einzelanwendungsmodus verwenden --app --controller --api --v1 --Index.php --admin --Index.php --home --Index.php Zu diesem Zeitpunkt , die Route ist in Routeapp.phpRoute::get('api/:version/home',api.:version.Index/home') definiert

Dieses Problem wurde in vielen ThinkPHP6-Tutorials und vielen Suchanfragen nicht erwähnt Das Internet hat nach dem Testen nicht funktioniert. Die Zusammenfassung lautet also wie folgt: 1. Der Multi-Level-Controller im Einzelanwendungsmodus verwendet die API- und v1-Verzeichnisse als Unterverzeichnisse und Enkelverzeichnisse des Controllers Ich halte dies für ein Projekt für sinnvoller, sodass sowohl der Administrator als auch das Zuhause dieselbe Ansicht und dasselbe Modell verwenden können.
2. Im Multianwendungsmodus müssen Sie zuerst die Erweiterung für den Multianwendungsmodus installieren, Composer benötigt Topthink/Think-Multi-App und dann den Controller-Ordner löschen. PHP Think Build API generiert das Anwendungsverzeichnis set auto_multi_app=true. Das Framework wird danach beurteilt, ob es sich um eine einzelne Anwendung oder mehrere Anwendungen handelt. Erstellen Sie ein Routenverzeichnis im Anwendungsverzeichnis und definieren Sie die Route darin . Es ist kein Anwendungsname erforderlich. Fügen Sie ihn einfach zur URL hinzu, wenn darauf zugegriffen wird. Route::get(':version/home',:version.Index/home') entspricht der URL: http://localhost/api/v1/home
3. Diese Methode wird nicht häufig verwendet. aber wenn Laut der obigen Analyse kann es in apirouteroute.php und routeapp.php definiert werden, aber die URLs, auf die zugegriffen wird, sind unterschiedlich. Ersteres muss mit dem Anwendungsnamen api hinzugefügt werden, und letzteres muss ein beliebiger sein etwas hinzufügen.
4. Wenn Sie bei der Eingabe der obigen URL aufgefordert werden, keine Eingabedatei anzugeben, kann dieses Problem durch Hinzufügen von index.php zu http://localhost/index.php gelöst werden. Der Vorschlag besteht darin, ? nach der index.php von RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] in public.htaccess hinzuzufügen, also RewriteRule ^(.*)$ index.php?/ 1 $ [QSA, PT, L]

吾逍遥
吾逍遥

事在人为

Antworte allen(0)
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!