CakePHP-Routing

王林
Freigeben: 2024-09-10 17:25:07
Original
518 Leute haben es durchsucht

In diesem Kapitel werden wir die folgenden Themen im Zusammenhang mit dem Routing lernen −

  • Einführung in das Routing
  • Verbindungsrouten
  • Argumente an Routen übergeben
  • URLs generieren
  • URLs weiterleiten

Einführung in das Routing

In diesem Abschnitt erfahren Sie, wie Sie Routen implementieren, wie Sie Argumente von der URL an die Aktion des Controllers übergeben, wie Sie URLs generieren und wie Sie zu einer bestimmten URL umleiten können. Normalerweise werden Routen in der Datei config/routes.php implementiert. Routing kann auf zwei Arten implementiert werden −

  • statische Methode
  • Routenersteller mit Gültigkeitsbereich

Hier ist ein Beispiel, das beide Typen darstellt.

// 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']);
Nach dem Login kopieren

Beide Methoden führen die Indexmethode von ArticlesController aus. Von den beiden Methoden bietet Scoped Route Builder eine bessere Leistung.

Verbindungsrouten

Die Methode

Router::connect() wird zum Verbinden von Routen verwendet. Das Folgende ist die Syntax der Methode −

static Cake\Routing\Router::connect($route, $defaults =[], $options =[])
Nach dem Login kopieren

Es gibt drei Argumente für die Methode Router::connect()

  • Das erste Argument bezieht sich auf die URL-Vorlage, die Sie abgleichen möchten.

  • Das zweite Argument enthält Standardwerte für Ihre Routenelemente.

  • Das dritte Argument enthält Optionen für die Route, die im Allgemeinen Regeln für reguläre Ausdrücke enthält.

Hier ist das Grundformat einer Route −

$routes->connect(
   'URL template',
   ['default' => 'defaultValue'],
   ['option' => 'matchingRegex']
);
Nach dem Login kopieren

Beispiel

Nehmen Sie Änderungen in der Datei config/routes.php vor, wie unten gezeigt.

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();
});
Nach dem Login kopieren

Erstellen Sie eine TestsController.php-Datei unter src/Controller/TestsController.php. Kopieren Sie den folgenden Code in die Controller-Datei.

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()
   {
   }
}
Nach dem Login kopieren

Erstellen Sie einen Ordner Tests unter src/Template und erstellen Sie unter diesem Ordner eine Ansichtsdatei mit dem Namen show.php. Kopieren Sie den folgenden Code in diese Datei.

src/Template/Tests/show.php

<h1>This is CakePHP tutorial and this is an example of connecting routes.</h1>
Nach dem Login kopieren

Führen Sie das obige Beispiel aus, indem Sie die folgende URL besuchen, die unter http://localhost/cakephp4/ verfügbar ist.

Ausgabe

Die obige URL liefert die folgende Ausgabe.

Above URL

Übergebene Argumente

Übergebene Argumente sind die Argumente, die in der URL übergeben werden. Diese Argumente können an die Aktion des Controllers übergeben werden. Diese übergebenen Argumente werden Ihrem Controller auf drei Arten übergeben.

Als Argumente für die Aktionsmethode

Das folgende Beispiel zeigt, wie wir Argumente an die Aktion des Controllers übergeben können. Besuchen Sie die folgende URL unter http://localhost/cakephp4/tests/value1/value2

Dies entspricht der folgenden Routenlinie.

$builder->connect('tests/:arg1/:arg2', ['controller' => 'Tests', 'action' => 'show'],['pass' => ['arg1', 'arg2']]);
Nach dem Login kopieren

Hier wird der Wert1 von der URL arg1 und der Wert2 arg2 zugewiesen.

Als numerisch indiziertes Array

Sobald das Argument an die Aktion des Controllers übergeben wurde, können Sie das Argument mit der folgenden Anweisung abrufen.

$args = $this->request->params[‘pass’]
Nach dem Login kopieren

Die an die Aktion des Controllers übergebenen Argumente werden in der Variablen $args gespeichert.

Routing-Array verwenden

Das Argument kann auch durch die folgende Anweisung an eine Aktion übergeben werden: −

$routes->connect('/', ['controller' => 'Tests', 'action' => 'show',5,6]);
Nach dem Login kopieren

Die obige Anweisung übergibt zwei Argumente 5 und 6 an die show()-Methode von TestController.

Beispiel

Nehmen Sie Änderungen in der Datei config/routes.php vor, wie im folgenden Programm gezeigt.

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();
});
Nach dem Login kopieren

Erstellen Sie eine TestsController.php-Datei unter src/Controller/TestsController.php. Kopieren Sie den folgenden Code in die Controller-Datei.

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);
   }
}
Nach dem Login kopieren

Erstellen Sie einen Ordner Tests unter src/Template und erstellen Sie unter diesem Ordner eine View-Datei mit dem Namen show.php. Kopieren Sie den folgenden Code in diese Datei.

src/Template/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/>";
?>
Nach dem Login kopieren

Führen Sie das obige Beispiel aus, indem Sie die folgende URL besuchen: http://localhost/cakephp4/tests/Virat/Kunal

Ausgabe

Bei der Ausführung erzeugt die obige URL die folgende Ausgabe.

Passed Argument

URLs generieren

Dies ist eine coole Funktion von CakePHP. Mithilfe der generierten URLs können wir die URL-Struktur in der Anwendung problemlos ändern, ohne den gesamten Code zu ändern.

url( string|array|null $url null , boolean $full false )
Nach dem Login kopieren

Die obige Funktion benötigt zwei Argumente −

  • Das erste Argument ist ein Array, das eines der folgenden Elemente angibt: 'Controller', 'Aktion', 'Plugin'. Darüber hinaus können Sie geroutete Elemente oder Abfragezeichenfolgenparameter bereitstellen. Bei einer Zeichenfolge kann der Name einer beliebigen gültigen URL-Zeichenfolge angegeben werden.

  • Wenn „true“, wird die vollständige Basis-URL dem Ergebnis vorangestellt. Der Standardwert ist false.

Beispiel

Nehmen Sie Änderungen in der Datei config/routes.php vor, wie im folgenden Programm gezeigt.

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();
});
Nach dem Login kopieren

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()
   {
   }
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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 =[])
Nach dem Login kopieren

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();
});
Nach dem Login kopieren

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

Das obige ist der detaillierte Inhalt vonCakePHP-Routing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage