Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?
- Pengenalan kepada Penghalaan
- Menghubungkan Laluan
- Menyalurkan Hujah ke Laluan
- Menjana url
- Ubah hala url
Pengenalan kepada Penghalaan
Dalam bahagian ini, kami akan melihat cara anda boleh melaksanakan laluan, cara anda boleh menghantar hujah daripada URL kepada tindakan pengawal, cara anda boleh menjana URL dan cara anda boleh mengubah hala ke URL tertentu. Biasanya, laluan dilaksanakan dalam fail config/routes.php. Penghalaan boleh dilaksanakan dalam dua cara ?
- kaedah statik
- pembina laluan berskop
Di sini, ialah contoh yang membentangkan kedua-dua jenis.
// Using the scoped route builder. Router::scope('/', function ($routes) { $routes->connect('/', ['controller' => 'Articles', 'action' => 'index']); }); // Using the static method. Router::connect('/', ['controller' => 'Articles', 'action' => 'index']);
Kedua-dua kaedah akan melaksanakan kaedah indeks ArticleController. Daripada dua kaedah tersebut, pembina laluan berskop memberikan prestasi yang lebih baik.
Menghubungkan Laluan
KaedahPenghala::connect() digunakan untuk menyambung laluan. Berikut ialah sintaks kaedah ?
static Cake\Routing\Router::connect($route, $defaults =[], $options =[])
Terdapat tiga argumen untuk kaedah Router::connect() ?
Argumen pertama adalah untuk templat URL yang ingin anda padankan.
Argumen kedua mengandungi nilai lalai untuk elemen laluan anda.
Argumen ketiga mengandungi pilihan untuk laluan, yang biasanya mengandungi peraturan ungkapan biasa.
Di sini, ialah format asas laluan ?
$routes->connect( 'URL template', ['default' => 'defaultValue'], ['option' => 'matchingRegex'] );
Contoh
Buat perubahan dalam fail config/routes.php seperti yang ditunjukkan di bawah.
config/routes.php
<?php use Cake\Http\Middleware\CsrfProtectionMiddleware; use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/', function (RouteBuilder $builder) { // Register scoped middleware for in scopes. $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([ 'httpOnly' => true, ])); $builder->applyMiddleware('csrf'); $builder->connect('/', ['controller' => 'Tests', 'action' => 'show']); $builder->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); $builder->fallbacks(); });
Buat fail TestsController.php di src/Controller/TestsController.php. Salin kod berikut dalam fail pengawal.
src/Controller/TestsController.php
<?php declare(strict_types=1); namespace App\Controller; use Cake\Core\Configure; use Cake\Http\Exception\ForbiddenException; use Cake\Http\Exception\NotFoundException; use Cake\Http\Response; use Cake\View\Exception\MissingTemplateException; class TestsController extends AppController { public function show() { } }
Buat folder Ujian di bawah src/Template dan di bawah folder itu, buat Lihat fail yang dipanggil show.php. Salin kod berikut dalam fail itu.
src/Templat/Tests/show.php
<h1>This is CakePHP tutorial and this is an example of connecting routes.</h1>
Laksanakan contoh di atas dengan melawati URL berikut yang boleh didapati di http://localhost/cakephp4/
Output
URL di atas akan menghasilkan output berikut.

Lulus Hujah
Argumen yang diluluskan ialah argumen yang dihantar dalam URL. Argumen ini boleh dihantar kepada tindakan pengawal. Argumen yang diluluskan ini diberikan kepada pengawal anda dalam tiga cara.
Sebagai hujah kepada kaedah tindakan
Contoh berikut menunjukkan, cara kita boleh menyampaikan hujah kepada tindakan pengawal. Lawati URL berikut di http://localhost/cakephp4/tests/value1/value2
Ini akan sepadan dengan garis laluan berikut.
$builder->connect('tests/:arg1/:arg2', ['controller' => 'Tests', 'action' => 'show'],['pass' => ['arg1', 'arg2']]);
Di sini, nilai1 daripada URL akan diberikan kepada arg1 dan nilai2 akan diberikan kepada arg2.
Sebagai tatasusunan yang diindeks secara berangka
Setelah hujah diserahkan kepada tindakan pengawal, anda boleh mendapatkan hujah dengan pernyataan berikut.
$args = $this->request->params[‘pass’]
Argumen yang dihantar kepada tindakan pengawal akan disimpan dalam pembolehubah $args.
Menggunakan tatasusunan penghalaan
Hujah juga boleh diserahkan kepada tindakan dengan pernyataan berikut ?
$routes->connect('/', ['controller' => 'Tests', 'action' => 'show',5,6]);
Pernyataan di atas akan memberikan dua hujah 5 dan 6 kepada kaedah show() TestController.
Contoh
Buat Perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam program berikut.
config/routes.php
<?php use Cake\Http\Middleware\CsrfProtectionMiddleware; use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/', function (RouteBuilder $builder) { // Register scoped middleware for in scopes. $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([ 'httpOnly' => true, ])); $builder->applyMiddleware('csrf'); $builder->connect('tests/:arg1/:arg2', ['controller' => 'Tests', 'action' => 'show'],['pass' => ['arg1', 'arg2']]); $builder->connect('/pages/*', ['controller' => 'Pages', 'action' => 'display']); $builder->fallbacks(); });
Buat fail TestsController.php di src/Controller/TestsController.php. Salin kod berikut dalam fail pengawal.
src/Controller/TestsController.php
<?php declare(strict_types=1); namespace App\Controller; use Cake\Core\Configure; use Cake\Http\Exception\ForbiddenException; use Cake\Http\Exception\NotFoundException; use Cake\Http\Response; use Cake\View\Exception\MissingTemplateException; class TestsController extends AppController { public function show($arg1, $arg2) { $this->set('argument1',$arg1); $this->set('argument2',$arg2); } }
Buat folder Ujian di src/Template dan di bawah folder itu buat fail View yang dipanggil show.php. Salin kod berikut dalam fail itu.
src/Templat/Tests/show.php.
<h1>This is CakePHP tutorial and this is an example of Passed arguments.</h1> <?php echo "Argument-1:".$argument1."<br/>"; echo "Argument-2:".$argument2."<br/>"; ?>
Laksanakan contoh di atas dengan melawati URL berikut http://localhost/cakephp4/tests/Virat/Kunal
Output
Setelah dilaksanakan, URL di atas akan menghasilkan output berikut.

Menjana URL
Ini adalah ciri hebat CakePHP. Menggunakan URL yang dijana, kami boleh menukar struktur URL dalam aplikasi dengan mudah tanpa mengubah suai keseluruhan kod.
url( string|array|null $url null , boolean $full false )
Fungsi di atas akan mengambil dua hujah ?
Argumen pertama ialah tatasusunan yang menyatakan mana-mana yang berikut - 'pengawal', 'tindakan', 'pemalam'. Selain itu, anda boleh menyediakan elemen yang dihalakan atau parameter rentetan pertanyaan. Jika rentetan, ia boleh diberi nama mana-mana rentetan url yang sah.
Jika benar, URL asas penuh akan ditambahkan pada hasil carian. Lalai adalah palsu.
Contoh
Buat Perubahan dalam fail config/routes.php seperti yang ditunjukkan dalam program berikut.
config/routes.php
<?php use Cake\Http\Middleware\CsrfProtectionMiddleware; use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/', function (RouteBuilder $builder) { // Register scoped middleware for in scopes. $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([ 'httpOnly' => true, ])); $builder->applyMiddleware('csrf'); $builder->connect('/generate',['controller'=>'Generates','action'=>'show']); $builder->fallbacks(); });
Create a GeneratesController.php file at src/Controller/GeneratesController.php. Copy the following code in the controller file.
src/Controller/GeneratesController.php
<?php declare(strict_types=1); namespace App\Controller; 21 use Cake\Core\Configure; use Cake\Http\Exception\ForbiddenException; use Cake\Http\Exception\NotFoundException; use Cake\Http\Response; use Cake\View\Exception\MissingTemplateException; class GeneratesController extends AppController { public function show() { } }
Create a folder Generates at src/Template and under that folder, create a View file called show.php. Copy the following code in that file.
src/Template/Generates/show.php
<h1>This is CakePHP tutorial and this is an example of Generating URLs<h1>
Execute the above example by visiting the following URL ?
http://localhost/cakephp4/generate
Output
The above URL will produce the following output ?

Redirect Routing
Redirect routing is useful, when we want to inform client applications that, this URL has been moved. The URL can be redirected using the following function ?
static Cake\Routing\Router::redirect($route, $url, $options =[])
There are three arguments to the above function as follows ?
A string describing the template of the route.
A URL to redirect to.
An array matching the named elements in the route to regular expressions which that element should match.
Example
Make Changes in the config/routes.php file as shown below. Here, we have used controllers that were created previously.
config/routes.php
<?php use Cake\Http\Middleware\CsrfProtectionMiddleware; use Cake\Routing\Route\DashedRoute; use Cake\Routing\RouteBuilder; $routes->setRouteClass(DashedRoute::class); $routes->scope('/', function (RouteBuilder $builder) { // Register scoped middleware for in scopes. $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([ 'httpOnly' => true, ])); $builder->applyMiddleware('csrf'); $builder->connect('/generate',['controller'=>'Generates','action'=>'show']); $builder->redirect('/redirect','https://tutorialspoint.com/'); $builder->fallbacks(); });
Execute the above example by visiting the following URLs.
URL 1 ? http://localhost/cakephp4/generate
Output for URL 1

URL 2 ? http://localhost/cakephp4/redirect
Output for URL 2
You will be redirected to https://tutorialspoint.com
Atas ialah kandungan terperinci Penghalaan CakePHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Untuk menggabungkan dua susunan PHP dan menyimpan nilai unik, terdapat dua kaedah utama. 1. Untuk tatasusunan indeks atau hanya deduplikasi, gunakan Array_Merge dan Array_unique Combinations: First Gabungan Array_Merge ($ array1, $ array2) dan kemudian gunakan array_unique () untuk deduplikasi mereka untuk akhirnya mendapatkan array baru yang mengandungi semua nilai unik; 2. Untuk array bersekutu dan ingin mengekalkan pasangan nilai utama dalam array pertama, gunakan pengendali: $ hasil = $ array1 $ array2, yang akan memastikan bahawa kunci dalam array pertama tidak akan ditimpa oleh array kedua. Kedua -dua kaedah ini boleh digunakan untuk senario yang berbeza, bergantung kepada sama ada nama kunci dikekalkan atau hanya fokus yang dihadapi

Keluar () adalah fungsi dalam PHP yang digunakan untuk menamatkan pelaksanaan skrip dengan segera. Kegunaan umum termasuk: 1. Menamatkan skrip terlebih dahulu apabila pengecualian dikesan, seperti fail tidak wujud atau pengesahan gagal; 2. Output hasil pertengahan semasa debugging dan berhenti pelaksanaan; 3. Panggilan keluar () selepas pengalihan bersamaan dengan header () untuk mengelakkan pelaksanaan kod berikutnya; Di samping itu, keluar () boleh menerima parameter rentetan sebagai kandungan output atau integer sebagai kod status, dan aliasnya mati ().

Penggunaan rasional tag semantik dalam HTML dapat meningkatkan kejelasan struktur halaman, aksesibilitas dan kesan SEO. 1. Digunakan untuk blok kandungan bebas, seperti jawatan blog atau komen, ia mesti mandiri; 2. Digunakan untuk kandungan berkaitan klasifikasi, biasanya termasuk tajuk, dan sesuai untuk modul yang berlainan halaman; 3. Digunakan untuk maklumat tambahan yang berkaitan dengan kandungan utama tetapi tidak teras, seperti cadangan sidebar atau profil pengarang. Dalam perkembangan sebenar, label harus digabungkan dan lain -lain, elakkan bersarang yang berlebihan, pastikan struktur mudah, dan sahkan rasionalitas struktur melalui alat pemaju.

Terdapat dua cara untuk membuat array dalam PHP: Gunakan fungsi array () atau gunakan kurungan []. 1. Menggunakan fungsi array () adalah cara tradisional, dengan keserasian yang baik. Tentukan array indeks seperti $ buah -buahan = array ("epal", "pisang", "oren"), dan array bersekutu seperti $ user = array ("name" => "John", "umur" => 25); 2. Menggunakan [] adalah cara yang lebih mudah untuk menyokong sejak Php5.4, seperti warna $

Apabila anda menghadapi "operasi ini memerlukan peningkatan keizinan", ini bermakna anda memerlukan kebenaran pentadbir untuk diteruskan. Penyelesaian termasuk: 1. Klik kanan program "Run As Administrator" atau tetapkan pintasan untuk sentiasa dijalankan sebagai pentadbir; 2. Periksa sama ada akaun semasa adalah akaun pentadbir, jika tidak, menukar atau meminta bantuan pentadbir; 3. Gunakan Kebenaran Pentadbir untuk membuka command prompt atau PowerShell untuk melaksanakan perintah yang relevan; 4. Menghapuskan sekatan dengan mendapatkan pemilikan fail atau mengubah suai pendaftaran apabila perlu, tetapi operasi tersebut perlu berhati -hati dan memahami sepenuhnya risiko. Sahkan identiti kebenaran dan cuba kaedah di atas biasanya menyelesaikan masalah.

Cara untuk memproses data pos mentah dalam PHP adalah menggunakan $ rawData = file_get_contents ('php: // input'), yang sesuai untuk menerima JSON, XML, atau data format tersuai yang lain. 1.php: // input adalah aliran baca sahaja, yang hanya sah dalam permintaan pos; 2. Masalah biasa termasuk konfigurasi pelayan atau aliran input membaca middleware, yang menjadikannya mustahil untuk mendapatkan data; 3. Senario aplikasi termasuk menerima permintaan pengambilan depan, panggilan balik perkhidmatan pihak ketiga, dan membina Restfulapis; 4. Perbezaan dari $ _POST ialah $ _POST secara automatik menghidupkan data borang standard, manakala data asal sesuai untuk format bukan standard dan membolehkan parsing manual; 5. htm biasa

Untuk mengendalikan muat naik fail PHP dengan selamat, anda perlu mengesahkan sumber dan jenis, mengawal nama fail dan laluan, menetapkan sekatan pelayan, dan memproses fail media dua kali. 1. Sahkan sumber muat naik untuk mengelakkan CSRF melalui token dan mengesan jenis mime sebenar melalui finfo_file menggunakan kawalan putih; 2. Namakan semula fail ke rentetan rawak dan tentukan pelanjutan untuk menyimpannya dalam direktori bukan web mengikut jenis pengesanan; 3. Konfigurasi PHP mengehadkan saiz muat naik dan direktori sementara Nginx/Apache melarang akses ke direktori muat naik; 4. Perpustakaan GD menyambung semula gambar -gambar untuk membersihkan data yang berpotensi.

Inphp, variablesarepassedbyvalueDefault, arequFunctionsorassignmentsReceiveacopyofthedata, sementara
