Heim > Artikel > PHP-Framework > So lösen Sie das Problem, dass das Thinkphp-Routing nicht konvertiert wird
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]', ];
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!