Bagaimana laluan rangka kerja ditakrifkan


Penghalaan ialah teknologi untuk mencari sumber pelayan untuk diakses


Mendaftarkan laluan

: takrifan laluan' yang paling asas! , 'Alamat penghalaan', 'Jenis permintaan')`

use think\facade\Route;

Ambil satu aplikasi sebagai contoh:

// 注册路由到News控制器的read操作
Route::rule('new/:id','News/read');

Apabila kita melawat:

http://serverName/new/5

, ia akan dihalakan secara automatik ke:

http://serverName/news/read/id/5

dan alamat akses asal akan secara automatik menjadi tidak sah.

Anda boleh menentukan jenis permintaan dalam kaedah peraturan (jika tidak dinyatakan, sebarang jenis permintaan akan sah secara lalai), contohnya:

Route::rule('new/:id', 'News/update', 'POST');

Parameter jenis permintaan tidak peka huruf besar-kecil.

bermakna peraturan penghalaan yang ditetapkan hanya sah di bawah permintaan POST. Jika anda ingin menentukan peraturan penghalaan yang disokong oleh permintaan GET dan POST, anda boleh menggunakan:

Route::rule('new/:id','News/read','GET|POST');

Tetapi biasanya kami mengesyorkan menggunakan kaedah pintasan yang sepadan dengan jenis permintaan, termasuk:


PeneranganLETAK permintaanletakDELETEDELETE requestdeletePATCHPATCH requestpatch*sebarang jenis permintaansebarang permintaan


Penggunaan kaedah pendaftaran pantas ialah:

Laluan::nama kaedah pintasan ('ungkapan penghalaan', 'alamat penghalaan')

Contoh penggunaan adalah seperti berikut:

Route::get('new/<id>','News/read'); // 定义GET请求路由规则
Route::post('new/<id>','News/update'); // 定义POST请求路由规则
Route::put('new/:id','News/update'); // 定义PUT请求路由规则
Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则
Route::any('new/:id','News/read'); // 所有请求都支持的路由规则

Selepas mendaftarkan peraturan penghalaan berbilang sistem akan meneruskan dalam urutan Lintas peraturan penghalaan berdaftar yang memenuhi jenis permintaan Setelah peraturan penghalaan yang betul dipadankan, kaedah penjadualan akhir akan dilaksanakan dan peraturan berikutnya tidak akan dikesan lagi.

Ungkapan peraturan

Ungkapan peraturan biasanya termasuk peraturan statik dan peraturan dinamik, serta gabungan dua peraturan Contohnya, yang berikut adalah semua ungkapan peraturan yang sah:

Route::rule('/', 'index'); // 首页访问路由
Route::rule('my', 'Member/myinfo'); // 静态地址路由
Route::rule('blog/:id', 'Blog/read'); // 静态地址和动态地址结合
Route::rule('new/:year/:month/:day', 'News/read'); // 静态地址和动态地址结合
Route::rule(':user/:blog_id', 'Blog/read'); // 全动态地址

Takrifan ungkapan biasa mengambil /. sebagai parameter Pembatas (tidak kira apa tetapan pembatas PATH_INFO anda, sila pastikan anda menggunakan / melaksanakan pemisahan parameter URL secara seragam apabila mentakrifkan ungkapan peraturan penghalaan, melainkan menggunakan pembolehubah gabungan).

Setiap parameter boleh termasuk pembolehubah dinamik, contohnya: pembolehubah atau <pembolehubah> kedua-duanya mewakili pembolehubah dinamik (versi baharu mengesyorkan menggunakan kaedah kedua, yang lebih kondusif kepada definisi pembolehubah bercampur), dan akan terikat secara automatik kepada yang sepadan parameter kaedah operasi.

Pembatas akses URL anda PATH_INFO dikonfigurasikan menggunakan pathinfo_depr, tetapi tidak kira bagaimana dikonfigurasikan, ia tidak menjejaskan takrifan pembatas penghalaan bagi ungkapan peraturan penghalaan.

Pembolehubah pilihan

menyokong takrifan pilihan bagi parameter penghalaan, contohnya:

Route::get('blog/:year/[:month]','Blog/archive');
// 或者
Route::get('blog/<year>/<month?>','Blog/archive');

Apabila pembolehubah disertakan dengan [ ], ini bermakna pembolehubah itu ialah pembolehubah pilihan untuk pemadanan laluan.

Selepas mentakrifkan peraturan penghalaan di atas, alamat akses URL berikut boleh dipadankan dengan laluan yang betul:

http://serverName/index.php/blog/2015
http://serverName/index.php/blog/2015/12

Selepas menggunakan definisi pembolehubah pilihan, situasi yang sebelum ini memerlukan mentakrifkan dua atau lebih peraturan penghalaan boleh digabungkan menjadi satu peraturan laluan.

Parameter pilihan hanya boleh diletakkan di penghujung peraturan penghalaan Jika parameter pilihan digunakan di tengah, pembolehubah seterusnya akan menjadi parameter pilihan. Perlawanan Peraturan yang sesuai dengan pengesanan yang sepadan, lalai adalah untuk memadankan URL dari awal. URL untuk dipadankan sepenuhnya, anda boleh menambahkannya di penghujung ungkapan penghalaan Gunakan simbol $, contohnya:

Route::get('new/:cate$', 'News/category');

Selepas definisi ini,

http://serverName/index.php/new/info
akan berjaya dipadankan, tetapi
http://serverName/index.php/new/info/2

tidak akan berjaya dipadankan.

Jika ia ditakrifkan dalam cara

Route::get('new/:cate', 'News/category');

, kedua-dua kaedah akses URL boleh dipadankan dengan jayanya.

Jika anda perlu memadankan sepenuhnya URL secara global, anda boleh menetapkan

// 开启路由完全匹配
'route_complete_match'   => true,

parameter tambahan dalam fail konfigurasi penghalaan

Sokong pasangan parameter masuk tambahan apabila penghalaan melompat (parameter tambahan merujuk kepada parameter yang tiada dalam URL , secara tersirat lulus dalam operasi yang diperlukan kadangkala boleh memainkan peranan tertentu dalam perlindungan keselamatan, yang akan kami sebutkan kemudian). Contohnya:

Route::get('blog/:id','blog/read')
    ->append(['status' => 1, 'app_id' =>5]);

Dalam definisi peraturan penghalaan di atas, parameter status dan app_id tidak wujud dalam URL dan merupakan pemindahan nilai tersirat Sudah tentu, ia tidak semestinya diperlukan, tetapi boleh digunakan apabila diperlukan. Parameter tambahan yang berbeza boleh ditetapkan untuk laluan yang berbeza. Jika terdapat percanggahan antara pembolehubah dalam kaedah tambah dan peraturan penghalaan, yang diluluskan dalam kaedah tambah akan diutamakan.

RoutePengenal

Jika anda perlu menjana alamat URL dengan cepat berdasarkan laluan, anda boleh menentukan pengecam penjanaan semasa menentukan laluan (tetapi pastikan ia unik).

Sebagai contoh,

// 注册路由到News控制器的read操作
Route::rule('new/:id','News/read')
    ->name('new_read');

boleh digunakan semasa menjana alamat penghalaan

url('new_read', ['id' => 10]);

Jika tiada pengecam penghalaan ditakrifkan, sistem akan menggunakan alamat penghalaan sebagai pengecam penghalaan secara lalai Contohnya, kaedah berikut boleh digunakan untuk hasilkan

url('News/read', ['id' => 10]);

penghalaan paksa
Hanya tetapkan peraturan penghalaan untuk halaman utama

'url_route_must'		=>  true,

dalam fail konfigurasi penghalaan Contohnya, laluan berikut mengeluarkan Hello, world!

Route::get('/', function () {
    return 'Hello,world!';
})



🎜🎜🎜
Type kaedah pintasan