Jadual Kandungan
Pengenalan kepada Penghalaan
Menghubungkan Laluan
Contoh
Output
Lulus Hujah
Sebagai hujah kepada kaedah tindakan
Sebagai tatasusunan yang diindeks secara berangka
Menggunakan tatasusunan penghalaan
Menjana URL
Redirect Routing
Example
Output for URL 2

Penghalaan CakePHP

Sep 10, 2024 pm 05:25 PM
php cakephp PHP framework

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']);
Salin selepas log masuk

Kedua-dua kaedah akan melaksanakan kaedah indeks ArticleController. Daripada dua kaedah tersebut, pembina laluan berskop memberikan prestasi yang lebih baik.

Menghubungkan Laluan

Kaedah

Penghala::connect() digunakan untuk menyambung laluan. Berikut ialah sintaks kaedah −

static Cake\Routing\Router::connect($route, $defaults =[], $options =[])
Salin selepas log masuk

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']
);
Salin selepas log masuk

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();
});
Salin selepas log masuk

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()
   {
   }
}
Salin selepas log masuk

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>
Salin selepas log masuk

Laksanakan contoh di atas dengan melawati URL berikut yang boleh didapati di http://localhost/cakephp4/

Output

URL di atas akan menghasilkan output berikut.

Above URL

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']]);
Salin selepas log masuk

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’]
Salin selepas log masuk

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]);
Salin selepas log masuk

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();
});
Salin selepas log masuk

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);
   }
}
Salin selepas log masuk

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/>";
?>
Salin selepas log masuk

Laksanakan contoh di atas dengan melawati URL berikut http://localhost/cakephp4/tests/Virat/Kunal

Output

Setelah dilaksanakan, URL di atas akan menghasilkan output berikut.

Passed Argument

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 )
Salin selepas log masuk

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();
});
Salin selepas log masuk

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()
   {
   }
}
Salin selepas log masuk

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>
Salin selepas log masuk

Execute the above example by visiting the following URL −

http://localhost/cakephp4/generate

Output

The above URL will produce the following output −

Generating URL

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 =[])
Salin selepas log masuk

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();
});
Salin selepas log masuk

Execute the above example by visiting the following URLs.

URL 1 − http://localhost/cakephp4/generate

Output for URL 1

Execute URL

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!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Konfigurasi Projek CakePHP

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Tarikh dan Masa CakePHP

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Muat naik Fail CakePHP

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Penghalaan CakePHP

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

Bincangkan CakePHP

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP

Panduan Ringkas CakePHP Panduan Ringkas CakePHP Sep 10, 2024 pm 05:27 PM

Panduan Ringkas CakePHP

See all articles