Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk menyediakan penghalaan dalam CakePHP?

Bagaimana untuk menyediakan penghalaan dalam CakePHP?

WBOY
WBOYasal
2023-06-04 11:21:031328semak imbas

CakePHP ialah rangka kerja PHP popular yang menyediakan pelbagai ciri dan komponen untuk mempercepatkan pembangunan aplikasi web. Salah satu komponen yang sangat berguna ialah penghalaan, yang digunakan untuk mengurus URL dalam aplikasi web.

Penghalaan ialah proses memetakan permintaan URL kepada komponen atau tindakan yang sepadan dalam aplikasi anda. Dalam CakePHP, pengurus laluan menggunakan peraturan penghalaan untuk mengenal pasti URL dan menghuraikannya ke dalam pengawal dan tindakan atau parameter lain.

Dalam artikel ini, kami akan melihat secara mendalam tentang cara menyediakan peraturan penghalaan dalam CakePHP untuk mempunyai kawalan yang lebih baik ke atas URL aplikasi web kami.

  1. Peraturan penghalaan asas

Peraturan penghalaan asas dalam CakePHP ialah memetakan URL kepada pengawal dan tindakan mereka. Secara lalai, CakePHP menggunakan nama pengawal sebagai segmen pertama laluan URL, diikuti dengan nama tindakan yang akan dipanggil dalam pengawal.

Sebagai contoh, jika kita mempunyai pengawal sebagai "ArticlesController" dan ia mempunyai tindakan yang dipanggil "view", maka secara lalai URL "/articles/view" akan dipetakan kepada tindakan tersebut.

Jika nama pengawal berbeza daripada nama dalam laluan URL atau anda ingin menggunakan nama tindakan yang berbeza, maka anda perlu menggunakan peraturan penghalaan tersuai.

  1. Peraturan penghalaan tersuai

Untuk menetapkan peraturan penghalaan tersuai, buka fail config/routes.php. Fail ini mengandungi semua peraturan penghalaan yang digunakan oleh pengurus penghalaan.

Dalam fail ini, anda boleh menggunakan kaedah Router::connect() untuk mentakrifkan peraturan penghalaan. Parameter pertama kaedah ini ialah templat laluan URL, yang menggunakan ruang letak untuk mewakili pengawal dan tindakan. Parameter kedua ialah nama pengawal/tindakan yang akan dipanggil.

Contohnya, jika anda ingin memetakan URL "/news/latest" kepada tindakan "terkini" "NewsController", anda boleh menggunakan kod berikut:

Router::connect('/news/latest', array('controller' => 'News', 'action' => 'latest'));

Dengan andaian anda mempunyai pengawal Pentadbir, Ia mempunyai tindakan yang dipanggil "papan pemuka" dan anda ingin memetakan URL "/admin/papan pemuka" kepada tindakan itu, anda boleh menggunakan kod berikut:

Router::connect('/admin/dashboard', array('controller' => 'Admin', 'action' => 'dashboard'));

Untuk pemegang tempat, anda boleh meletakkan dalam laluan URL Gunakan titik bertindih (:) diikuti dengan nama pemegang tempat, seperti ":id". Dalam nama pengawal/tindakan anda boleh menggunakan $nama pemegang tempat sebagai pembolehubah.

Sebagai contoh, jika anda ingin memetakan URL "/articles/123" kepada tindakan "view" bagi "ArticlesController" dan menggunakan ID artikel sebagai parameter tindakan, anda akan menggunakan kod berikut:

Router::connect('/articles/:id', array('controller' => 'Articles', 'action' => 'view'), array('pass' => array('id')));

Dalam kod di atas, kami menggunakan ":id" sebagai pemegang tempat untuk memadankan ID siaran dalam URL dan hantar "id" sebagai pilihan "lulus" kepada tindakan. Ini membolehkan anda menggunakan $this->request->params 'pass' dalam pengawal untuk mengakses ID pos.

Sila ambil perhatian bahawa peraturan penghalaan dalam CakePHP dihuraikan mengikut susunan yang ditakrifkan. Jika anda mentakrifkan berbilang peraturan penghalaan dengan templat laluan URL yang sama, anda mesti meletakkan peraturan yang paling khusus dahulu untuk memastikan penyelesaian laluan yang betul.

  1. Peraturan penghalaan bernama

Peraturan penghalaan bernama ialah cara untuk memberikan nama yang mudah diingati alamat penghalaan. Peraturan ini boleh ditakrifkan menggunakan kaedah Router::connectNamed() dan penamaan awalan menggunakan pilihan $prefixes.

Contohnya, jika anda mempunyai pengawal bernama "pengguna" dan anda ingin memetakan URL "/u/123" kepada tindakan "pandangan" pengawal itu dan lulus ID pengguna sebagai parameter bagi tindakan. Anda boleh menggunakan kod berikut:

Router::connectNamed(array('id'));
Router::connect('/u/:id', array('controller' => 'User', 'action' => 'view'), array('id' => 'd+'));

Dalam kod di atas, kami mula-mula mentakrifkan awalan penamaan yang dipanggil "id" menggunakan kaedah Router::connectNamed(). Kami kemudian menetapkan laluan URL kepada "/u/:id" dan memetakannya kepada tindakan "view" bagi "UserController", menggunakan ID pengguna sebagai parameter kepada tindakan tersebut. Akhir sekali, kami menggunakan ungkapan biasa untuk menyekat parameter ID untuk hanya menerima nombor.

Kini, dalam aplikasi anda, anda boleh menggunakan kaedah Router::url() untuk menjana URL bagi laluan yang dinamakan. Sebagai contoh, gunakan kod berikut untuk menjana URL: "/u/123":

Router::url(array('controller' => 'User', 'action' => 'view', 'id' => 123), array('named' => array('id')));

Dalam kod di atas, kami menggunakan awalan "id" peraturan penghalaan yang dinamakan untuk menetapkan nilai ID parameter.

Ringkasan

Dalam CakePHP, penghalaan ialah komponen penting untuk mengurus pemetaan URL. Ia membolehkan anda menyesuaikan URL aplikasi anda dan mengurus penghalaan aplikasi anda dengan lebih cekap.

Menggunakan pengurus laluan CakePHP, anda boleh mentakrifkan peraturan penghalaan tersuai, mengendalikan peraturan penghalaan bernama dan dengan mudah menyekat serta mengesahkan parameter penghalaan menggunakan ungkapan biasa. Ciri-ciri ini menyediakan kawalan yang lebih baik dan URL yang mudah digunakan untuk meningkatkan pengalaman pengguna aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk menyediakan penghalaan dalam CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn