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 html

Kemudian 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:

rreee

Jika 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