Penjanaan URL
Penjanaan URL boleh dilakukan menggunakan kaedah thinkfacadeRoute::buildUrl().
Kaedah ini akan mengembalikan contoh objek thinkrouteUrl Kerana kaedah __toString digunakan, alamat penghalaan boleh dikeluarkan secara langsung.
echo \think\facade\Route::buildUrl();
Jika data dikembalikan kepada pelanggan, anda boleh menghantarnya ke jenis rentetan sebelum mengembalikannya.
$url = (string) \think\facade\Route::buildUrl();
Gunakan pengecam penghalaan
Takrif ungkapan alamat adalah berbeza untuk kaedah alamat penghalaan yang berbeza. Parameter dihantar secara berasingan melalui parameter kedua Katakan kita mentakrifkan peraturan penghalaan seperti berikut:
Route::rule('blog/:id','index/blog/read');
Jika tiada pengecam penghalaan, alamat penghalaan boleh digunakan terus untuk menjana alamat URL:
Route::buildUrl('index/blog/read', ['id' => 5, 'name' => 'thinkphp']);
Jika kita sedang mendaftar laluan Apabila pengecam penghalaan ditentukan
Route::rule('blog/:id','index/blog/read')->name('blog_read');
Kemudian pengecam penghalaan mesti digunakan untuk menjana alamat URL
Route::buildUrl('blog_read', ['id' => 5, 'name' => 'thinkphp']);
Kaedah di atas akan menjana alamat URL berikut:
/index.php/blog/5/name/thinkphp.html
Jika persekitaran anda menyokong TULIS SEMULA, maka yang dihasilkan Alamat URL akan menjadi:
/blog/5/name/thinkphp.html
Jika anda mengkonfigurasi:
'url_common_param'=>true
, maka alamat URL yang dijana menjadi:
/index.php/blog/5.html?name=thinkphp
Pembolehubah yang tiada dalam peraturan penghalaan akan terus menggunakan parameter URL biasa.
Perlu diingat bahawa penjanaan alamat URL tidak mengesan kesahihan laluan, tetapi hanya menjana peraturan penghalaan yang layak berdasarkan alamat dan parameter penghalaan yang diberikan.
Menggunakan alamat penghalaan
Kami juga boleh terus menggunakan alamat penghalaan untuk menjana URL, contohnya:
Kami mentakrifkan peraturan penghalaan seperti berikut:
Route::get('blog/:id' , 'blog/read');
Anda boleh menggunakan peraturan penghalaan secara terus menggunakan alamat kaedah berikut :
Route::buildUrl('/blog/5');
Kemudian alamat URL yang dijana secara automatik menjadi:
/index.php/blog/5.html
Suffix URL
Secara lalai, sistem akan membaca parameter konfigurasi url_html_suffix secara automatik sebagai akhiran URL (default ialah html
), jika kita tetapkan htmlKemudian alamat URL yang dijana secara automatik menjadi:
'url_html_suffix' => 'shtml'
Jika kami menetapkan berbilang sokongan akhiran URL
/index.php/blog/5.shtml
, akhiran pertama akan digunakan untuk menjana alamat URL, jadi alamat URL yang dijana secara automatik masih:
rreeeJika anda mahu untuk menentukan Untuk menjana akhiran URL, anda boleh menggunakan:
'url_html_suffix' => 'html|shtml'
Penjanaan nama domain
Alamat URL yang dijana secara lalai tidak mempunyai nama domain Jika anda menggunakan penggunaan berbilang domain atau ingin menjana a Alamat URL dengan nama domain, anda perlu menghantarnya Masukkan parameter keempat Parameter ini mempunyai dua kegunaan:
Menjana nama domain secara automatik
/index.php/blog/5.html
Jika parameter keempat diluluskan dalam benar, ini bermakna menjana nama domain secara automatik. . Jika anda mendayakan url_domain_deploy, ia juga akan mengenal pasti nama domain yang sepadan dengan peraturan URL semasa.
Sebagai contoh, kami telah mendaftarkan maklumat penghalaan nama domain seperti berikut:
Route::buildUrl('blog/read', ['id'=>5])->suffix('shtml');
Kemudian alamat URL di atas dijana sebagai:
Route::buildUrl('index/blog/read', ['id'=>5]) ->suffix('shtml') ->domain(true);
Nyatakan nama domain
Anda juga boleh secara eksplisit lulus dalam domain tersebut. untuk menjana alamat, contohnya:
Route::domain('blog','index/blog');
Atau masukkan nama domain yang lengkap
http://blog.thinkphp.cn/read/id/5.shtml
Alamat URL yang dijana ialah:
Route::buildUrl('blog/read', ['id'=>5])->domain('blog');
Anda juga boleh memasukkan nama domain terus dalam parameter pertama, contohnya:
Route::buildUrl('index/blog/read', ['id'=>5])->domain('blog.thinkphp.cn');
Jana titik sauh
Menyokong penjanaan sauh URL Klik, anda boleh menggunakannya terus dalam parameter alamat URL:
http://blog.thinkphp.cn/read/id/5.shtml
Apabila menggunakan mata sauh dan nama domain bersama-sama, perhatikan titik sauh di hadapan dan nama domain di belakang.
Alamat URL yang dijana ialah:
Route::buildUrl('index/blog/read@blog', ['id'=>5]); Route::buildUrl('index/blog/read@blog.thinkphp.cn', ['id'=>5]);
ditambah dengan fail entri
Kadangkala alamat URL yang kami hasilkan mungkin perlu menambah index.php atau mengalih keluar index.php Selalunya, sistem akan menilai secara automatik. Jika ditemui Jika terdapat masalah dengan alamat yang dijana secara automatik, anda boleh menggunakan kaedah berikut:
Route::buildUrl('index/blog/read#anchor@blog', ['id'=>5]);
Fungsi pembantu
Sistem menyediakan fungsi pembantu url untuk melengkapkan fungsi yang sama, contohnya:
http://blog.thinkphp.cn/read/id/5.html#anchor