CakePHP ialah rangka kerja PHP MVC yang popular untuk membina aplikasi web. Dalam CakePHP, penghalaan ialah proses menukar URL akses kepada pengawal dan tindakan yang sepadan dalam aplikasi anda. Kadangkala kita perlu mengubah hala URL tertentu supaya URL yang dilawati oleh pengguna boleh dipetakan dengan betul ke laluan yang ditentukan dalam aplikasi. Artikel ini akan memperkenalkan cara melakukan ubah hala dalam CakePHP.
Penghalaan ubah hala merujuk kepada mekanisme yang mengubah hala satu URL ke URL lain semasa fasa penghalaan enjin. Dalam CakePHP, kita boleh menggunakan kaedah Router::redirect() untuk melaksanakan pengalihan laluan. Kaedah ini menerima dua parameter: URL untuk ubah hala dan URL untuk ubah hala. Contohnya, untuk mengubah hala akses kepada "/about" ke "/pages/about", anda boleh menggunakan kod berikut:
Router::redirect('/about', '/pages/about');
Kod di atas akan sepadan dengan URL "/about" dan kemudian mengubah hala ke " /halaman /tentang". Kod ini boleh ditambah dalam fail routes.php untuk memastikan pengalihan laluan di mana-mana dalam aplikasi.
Jika anda ingin mengubah hala permintaan khusus kepada URL yang berbeza sama sekali, anda boleh memberikan URL penuh dalam parameter kedua. Contohnya:
Router::redirect('/old-page', 'http://www.example.com/new-page');
Kod di atas akan sepadan dengan URL "/old-page" dan mengubah halanya ke "http://www.example.com/new-page".
Penghala CakePHP juga menyokong penggunaan ungkapan biasa untuk memadankan URL tertentu. Ungkapan biasa ialah mekanisme padanan corak fleksibel yang boleh menangkap pelbagai jenis nilai dalam URL. Untuk menggunakan penghalaan ungkapan biasa, anda harus menggunakan kaedah Router::connect() dan menyediakan corak URL dalam parameter pertama, yang sepatutnya merupakan ungkapan biasa. Contohnya, kod berikut akan sepadan dengan semua URL yang bermula dengan "/view/" dan diikuti dengan nombor, dan hantar nombor itu sebagai parameter kepada tindakan paparan pengawal View:
Router::connect( '/view/:id', array('controller' => 'view', 'action' => 'view'), array('id' => '[0-9]+') );
Kod di atas akan padankan sesuatu seperti " /view/123" dan hantar nombor "123" sebagai parameter kepada operasi paparan pengawal Lihat. Anda boleh menggunakan ungkapan biasa dalam penghala anda untuk melaksanakan pelbagai ubah hala.
Dalam aplikasi CakePHP, penghala lalai ialah mekanisme utama untuk memetakan URL kepada pengawal dan tindakan dalam aplikasi. Walau bagaimanapun, anda boleh menggunakan kelas Laluan untuk menyesuaikan penghala asas dan pemadanan URL. Anda boleh mengakses senarai penghala semasa menggunakan harta Router::$routes dan anda boleh menambah atau mengubah suai senarai penghala semasa menggunakan kaedah Router::connect() dan Router::redirect(). Anda juga boleh memuat semula senarai penghala menggunakan kaedah Router::reload().
Sebagai contoh, kod berikut akan menggunakan penghala tersuai untuk menyesuaikan ubah hala URL tertentu:
class CustomRouter extends CakeRoute { function parse($url) { if ($url == '/old-page') { $this->redirect('/new-page'); } return parent::parse($url); } } Router::connect('/old-page', array('controller' => 'pages', 'action' => 'display')); Router::$routes[] = new CustomRouter('/new-page', array('controller' => 'pages', 'action' => 'about'));
Kod di atas akan sepadan dengan URL "/old-page" dan mengubah hala ke "/ halaman baru". Ini dicapai dengan mentakrifkan kelas CustomRouter dan mengatasi kaedah parse()nya. Kaedah parse() ialah sebahagian daripada kelas CakeRoute dan biasanya digunakan untuk menghuraikan URL dan menukarnya kepada pengawal dan tindakan. Dalam contoh di atas, kami melanjutkan kaedah untuk melaksanakan tingkah laku ubah hala penghala tersuai.
Ringkasan
Di atas ialah beberapa kaedah pengalihan laluan dalam CakePHP. Dengan menggunakan penghalaan ubah hala, ungkapan biasa dan penghala tersuai, anda boleh menyesuaikan gelagat penghalaan aplikasi anda dan mengurus ubah hala URL. Semoga artikel ini bermanfaat kepada anda.
Atas ialah kandungan terperinci Bagaimanakah CakePHP melakukan pengalihan laluan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!