Pemetaan URL (URL bersahabat)

Modul TUrlMapping membolehkan PRADO membentuk dan mengenali URL bersahabat berdasarkan pada pola spesifik.

TUrlMapping terdiri dari daftar pola URL yang dipakai untuk menyamakan terhadap URL yang saat ini sedang diminta. Pola pertama yang sama kemudian akan dipakai untuk mendekomposisi URL ke dalam parameter request (dapat diakses melalui $this->Request['paramname']). Pola juga dipakai untuk membentuk URL yang dikustomisasi. Dalam hal ini, parameter dalam pola yang diterapkan akan diganti dengan nilai variabel GET terkait.

Untuk menggunakan TUrlMapping, seseorang harus menyetel properti UrlManager dari modul THttpRequest sebagai ID modul TUrlMapping. Lihat contoh berikut,

Contoh di atas adalah bagian dari konfigurasi aplikasi dari demo blog dalam rilis PRADO. Ia menghidupkan pengakuan format URL berikut:

ServiceParameter dan ServiceID (ID standarnya adalah 'page') masing-masing menyetel parameter layanan dan ID layanan terhadap modul Request. Parameter layanan untuk layanan TPageService adalah nama kelas Page, contohnya untuk URL "index.php?page=Home", "page" adalah ID layanan dan parameter layanan adalah "Home". Layanan lain dapat menggunakan parameter layanan dan ID secara berbeda. Lihat Layanan untuk lebih jelasnya.

Info: TUrlMapping harus dikonfigurasi sebelum modul Request mengatasi permintaan. Ini biasanya berarti mendeklarasikan modul TUrlMapping sebelum tag <services> dalam konfigurasi aplikasi. Menetapkan pemetaan dalam direktori config.xml tidak didukung.

Menetapkan Pola URL

TUrlMapping menghidupkan pengakuan terhadap format URL yang dikustomisasi berdasarkan pada daftar pola URL yang ditetapkan sebelumnya. Setiap pola ditetapkan dalam tag <url>.

Nilai atribut Pattern dan Parameters adalah pola ekspresi reguler yang menentukan kriteria pemetaan. Properti Pattern mengambil ekspresi reguler dengan nama parameter dikurung antara kurung kurawal kiri '{' dan kurung kurawal kanan '}'. Pola untuk setiap parameter dapat disetel menggunakan koleksi atribut Parameters. Sebagai contoh,

Contoh mirip dengan ekspresi reguler berikut (ia memakai fitur "named group" dalam ekspresi reguler yang tersedia dalam PHP): RegularExpression="/articles\/(?P\d{4})\/(?P\d{2})\/(?P\d+)/u"

Dalam contoh di atas, pola berisi 3 parameter bernama "year", "month" dan "day". Pola untuk parameter ini masing-masing adalah, "\d{4}" (4 digit), "\d{2}" (2 digit) dan "\d+" (1 atau lebih digit). Intinya, nama dan nilai atribut Parameters digunakan sebagai substrings dalam penggantian tempat pada string Pattern untuk membentuk string ekspresi reguler lengkap.

Catatan: Jika Anda bermaksud untuk menggunakan properti RegularExpression Anda perlu mengulang garis miring dalam ekspresi reguler.

Berikut dari contoh pola di atas, sebuah URL "http://example.com/index.php/articles/2006/07/21" akan disamakan dan benar. Akan tetapi, "http://example.com/index.php/articles/2006/07/hello" tidak benar karena pola parameter "day" tidak memuaskan. Dalam kelas TUrlMappingPattern standarnya, pola disamakan dengan properti path dari hanya URL. Sebagai contoh, hanya bagian "/index.php/articles/2006/07/21" dari URL yang ditetapkan.

URL permintaan yang dipetakan mirip dengan index.php?page=ArticleView&year=2006&month=07&day=21. Nilai parameter tersedia melalui obyek standar Request. Sebagai contoh, $this->Request['year'].

Pemetaan URL dievaluasi agar ia ditempatkan dan hanya pemetaan pertama yang menyamai URL akan dipakai. Pemetaan beruntun dapat dicapat dengan menempatkan pemetaan URL dalam urutan tertentu. Sebagai contoh, menempatkan pemetaan paling spesifik terlebih dahulu.

Membentuk URL Dikustomisasi

Sejak versi 3.1.1, TUrlMapping mulai mendukung pembentukan format URL terkustomisasi berdasarkan pola yang disediakan. Untuk menghidupkan fitur ini, setel TUrlMapping.EnableCustomUrl menjadi true. Saat THttpRequest.constrcutUrl() dipanggil, pembantukan kerja URL aktual akan didelegasikan ke turunan TUrlMappingPattern yang sama. Ia mengganti parameter dalam pola dengan variabel GET terkait dikirimkan ke constructUrl().

Pola yang sama adalah propreti ServiceID dan ServiceParameter yang sama seperti yang dikirimkan ke constructUrl() dan parameter yang diberi nama ditemukan dalam variabel GET. Sebagai contoh, constructUrl('Posts.ListPost',array('cat'=>2)) akan menggunakan pola pihak ketiga dalam contoh di atas.

Standarnya TUrlMapping akan membentuk URL yang diawali dengan yang saat ini meminta path naskah PHP, seperti /path/to/index.php/article/3. Para pengguna dapat mengubah perilaku ini dengan menetapkan prefiks URL secara spesifik melalui properti UrlPrefix-nya. Sebagai contoh, jika konfigurasi server Web memperlakukan index.php sebagai naskah standar, kita bisa menyetel UrlPrefix sebagai /path/to dan URL yang dibentuk akan terlihat seperti /path/to/article/3.