Yii - Routage d'URL

Pour modifier l'itinéraire par défaut de l'application, vous devez configurer le defaultRoute propriété.

Step 1 - Modifier le config/web.php fichier de la manière suivante.

<?php
   $params = require(__DIR__ . '/params.php'); $config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'defaultRoute' => 'site/contact',
      'components' => [
         //other code
?>

Step 2 - Aller à http://localhost:8080/index.php. Vous verrez la valeur par défautcontact page.

Pour mettre temporairement votre application en mode maintenance, vous devez configurer le yii\web\Application::$catchAll propriété.

Step 3 - Ajoutez la fonction suivante au SiteController.

public function actionMaintenance() {
   echo "<h1>Maintenance</h1>";
}

Step 4 - Ensuite, modifiez le config/web.php fichier de la manière suivante.

<?php
   $params = require(__DIR__ . '/params.php');
   $config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'catchAll' => ['site/maintenance'],
      'components' => [
         //OTHER CODE

Step 5 - Entrez maintenant n'importe quelle URL de votre application, vous verrez ce qui suit.

Créer des URL

Pour créer différents types d'URL, vous pouvez utiliser le yii\helpers\Url::to()méthode d'assistance. L'exemple suivant suppose que le format d'URL par défaut est utilisé.

Step 1 - Ajouter un actionRoutes() méthode à la SiteController.

public function actionRoutes() {
   return $this->render('routes');
}

Cette méthode rend simplement le routes vue.

Step 2 - Dans le répertoire views / site, créez un fichier appelé routes.php avec le code suivant.

<?php
   use yii\helpers\Url;
?>

<h4>
   <b>Url::to(['post/index']):</b>
   <?php
      // creates a URL to a route: /index.php?r = post/index
      echo Url::to(['post/index']);
   ?>
</h4>

<h4>
   <b>Url::to(['post/view', 'id' => 100]):</b>
   <?php
      // creates a URL to a route with parameters: /index.php?r = post/view&id=100
      echo Url::to(['post/view', 'id' => 100]);
   ?>
</h4>

<h4>
   <b>Url::to(['post/view', 'id' => 100, '#' => 'content']):</b>
   <?php
      // creates an anchored URL: /index.php?r = post/view&id=100#content
      echo Url::to(['post/view', 'id' => 100, '#' => 'content']);
   ?>
</h4>

<h4>
   <b>Url::to(['post/index'], true):</b>
   <?php
      // creates an absolute URL: http://www.example.com/index.php?r=post/index
      echo Url::to(['post/index'], true);
   ?>
</h4>

<h4>
   <b>Url::to(['post/index'], 'https'):</b>
   <?php
      // creates an absolute URL using the https scheme: https://www.example.com/index.php?r=post/index
      echo Url::to(['post/index'], 'https');
   ?>
</h4>

Step 3 - Type http://localhost:8080/index.php?r=site/routes, vous verrez quelques utilisations du to() fonction.

La route est passée au yii\helpers\Url::to() La méthode peut être relative ou absolue selon les règles suivantes -

  • si l'itinéraire est vide, l'itinéraire actuellement demandé sera utilisé.

  • si la route n'a pas de barre oblique, elle est considérée comme une route relative au module courant.

  • si la route ne contient pas de barres obliques, elle est considérée comme un ID d'action du contrôleur actuel.

le yii\helpers\Url helper class fournit également plusieurs méthodes utiles.

Step 4 - Modifier le routes Voir comme indiqué dans le code suivant.

<?php
   use yii\helpers\Url;
?>

<h4>
   <b>Url::home():</b>
   <?php
      // home page URL: /index.php?r=site/index
      echo Url::home();
   ?>
</h4>
 
<h4>
   <b>Url::base():</b>
   <?php
      // the base URL, useful if the application is deployed in a sub-folder of the Web root
      echo Url::base();
   ?>
</h4>
 
<h4>
   <b>Url::canonical():</b>
   <?php
      // the canonical URL of the currently requested URL
      // see https://en.wikipedia.org/wiki/Canonical_link_element
      echo Url::canonical();
   ?>
</h4>
 
<h4>
   <b>Url::previous():</b>
   <?php
      // remember the currently requested URL and retrieve it back in later requests
      Url::remember();
      echo Url::previous();
   ?>
</h4>

Step 5 - Si vous entrez l'adresse http://localhost:8080/index.php?r=site/routes dans le navigateur Web, vous verrez ce qui suit.