Rumah >rangka kerja php >ThinkPHP >Bagaimana untuk menyelesaikan masalah penghalaan thinkphp tidak menukar

Bagaimana untuk menyelesaikan masalah penghalaan thinkphp tidak menukar

WBOY
WBOYke hadapan
2023-05-27 17:07:221435semak imbas

1. Penerangan Masalah

Apabila kita menggunakan ThinkPHP untuk pembangunan, kadangkala kita menghadapi situasi ini: apabila kita melakukan beberapa operasi penghalaan, halaman Ia tidak lompat ke antara muka yang kami jangkakan.

Sebagai contoh, kami ingin mengakses kaedah "do" dalam "HomeController.php" melalui URL "www.example.com/home/do", tetapi kami sebenarnya tidak boleh mengakses kaedah ini. Pada masa yang sama, kami mendapati tiada mesej ralat muncul, yang menyebabkan kami tidak dapat memulakan.

2. Analisis sebab

Dalam ThinkPHP, laluan dipadankan melalui akhiran URL. Jika kami tidak menggunakan sebarang akhiran dalam URL kami, maka ThinkPHP akan berfikir bahawa kaedah yang ingin kami akses ialah kaedah lalai dalam pengawal (nama kaedah lalai biasanya "indeks").

Sebagai contoh, apabila kami menggunakan URL "www.example.com/home/index", kaedah "index" dalam "HomeController.php" akan diakses secara lalai.

Apabila kami menggunakan URL "www.example.com/home/do", kerana tiada akhiran digunakan, ThinkPHP akan berfikir bahawa kami ingin mengakses kaedah "indeks", dan kerana "do " kaedah Ia tidak wujud dalam pengawal, jadi akses halaman akan gagal.

3 Penyelesaian

1 Gunakan akhiran "/"

Jika anda menambah garis miring "/" di hujung URL, anda boleh mengelak situasi tidak sepadan laluan. Sebagai contoh, kita boleh menggunakan URL "www.example.com/home/do/" untuk mengakses kaedah "do" dalam "HomeController.php".

Pada masa yang sama, apabila kami menggunakan ThinkPHP untuk pembangunan, adalah disyorkan untuk menetapkan akhiran URL kepada "/" dalam fail konfigurasi config.php, untuk mengelakkan masalah laluan tidak ditukar.

2. Ubah suai peraturan penghalaan

Kami juga boleh menyelesaikan masalah dengan mengubah suai peraturan penghalaan.

Pertama, dalam fail konfigurasi penghalaan kami (biasanya route.php), kami boleh mentakrifkan peraturan penghalaan sebagai:

return [
    'home/do/[:id]' => 'home/[:action]',
];

Dengan cara ini, kami boleh menghantar URL "www.example. com /home/do/1" untuk mengakses kaedah "do" dalam "HomeController.php" dan lulus parameter id dalam URL.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah penghalaan thinkphp tidak menukar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam