Heim > PHP-Framework > Denken Sie an PHP > So lösen Sie das Problem, dass das Thinkphp-Routing nicht konvertiert wird

So lösen Sie das Problem, dass das Thinkphp-Routing nicht konvertiert wird

WBOY
Freigeben: 2023-05-27 17:07:22
nach vorne
1439 Leute haben es durchsucht

1. Problembeschreibung

Wenn wir ThinkPHP für die Entwicklung verwenden, stoßen wir manchmal auf diese Situation: Wenn wir etwas ausführen Bei Routing-Vorgängen springt die Seite nicht zur erwarteten Schnittstelle.

Zum Beispiel möchten wir über die URL „www.example.com/home/do“ auf die „do“-Methode in „HomeController.php“ zugreifen, können aber tatsächlich nicht auf diese Methode zugreifen. Gleichzeitig stellten wir fest, dass keine Fehlermeldung angezeigt wurde, sodass wir nicht starten konnten.

2. Ursachenanalyse

In ThinkPHP wird das Routing durch das URL-Suffix abgeglichen. Wenn wir in unserer URL kein Suffix verwenden, geht ThinkPHP davon aus, dass die Methode, auf die wir zugreifen möchten, die Standardmethode im Controller ist (der Standardmethodenname lautet im Allgemeinen „index“).

Wenn wir beispielsweise die URL „www.example.com/home/index“ verwenden, greifen wir standardmäßig auf die Methode „index“ in „HomeController.php“ zu.

Wenn wir die URL „www.example.com/home/do“ verwenden, weil kein Suffix verwendet wird, denkt ThinkPHP, dass wir auf die „Index“-Methode zugreifen möchten, und weil „ do "-Methode ist im Controller nicht vorhanden, daher schlägt der Seitenzugriff fehl.

3. Lösung

1. Verwenden Sie das Suffix „/“

Das Ende der URL „/“ kann Routing-Konflikte vermeiden. Beispielsweise können wir die URL „www.example.com/home/do/“ verwenden, um auf die Methode „do“ in „HomeController.php“ zuzugreifen.

Wenn wir ThinkPHP für die Entwicklung verwenden, wird gleichzeitig empfohlen, das URL-Suffix in der Konfigurationsdatei config.php auf „/“ zu setzen, um das Problem zu vermeiden, dass Routen nicht verfügbar sind konvertiert.

2. Routing-Regeln ändern

Wir können das Problem auch lösen, indem wir Routing-Regeln ändern.

Zunächst können wir in unserer Routing-Konfigurationsdatei (normalerweise route.php) die Routing-Regeln wie folgt definieren:

return [
    'home/do/[:id]' => 'home/[:action]',
];
Nach dem Login kopieren

Auf diese Weise können wir die URL übergeben „www.example.com/home/do/1“, um auf die „do“-Methode in „HomeController.php“ zuzugreifen und einen ID-Parameter in der URL zu übergeben.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass das Thinkphp-Routing nicht konvertiert wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage