Yii - Formats d'URL

Lorsqu'une application Yii traite une URL demandée, elle analyse d'abord l'URL en une route. Ensuite, pour traiter la demande, cette route est utilisée pour instancier l'action de contrôleur correspondante. Ce processus s'appellerouting. Le processus inverse est appelé création d'URL. leurlManagerLe composant d'application est responsable du routage et de la création d'URL. Il fournit deux méthodes -

  • parseRequest() - Analyse une demande dans une route.

  • createUrl() - Crée une URL à partir d'un itinéraire donné.

Formats d'URL

le urlManager le composant d'application prend en charge deux formats d'URL -

  • Le format par défaut utilise un paramètre de requête r pour représenter l'itinéraire. Par exemple, l'URL/index.php?r=news/view&id=5 représente l'itinéraire news/view et le id paramètre de requête 5.

  • Le joli format d'URL utilise le chemin supplémentaire avec le nom du script d'entrée. Par exemple, dans l'exemple précédent, un joli format serait/index.php/news/view/5. Pour utiliser ce format, vous devez définir les règles d'URL.

Pour activer le joli format d'URL et masquer le nom du script d'entrée, procédez comme suit:

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'],
      'components' => [
         'request' => [
            // !!! insert a secret key in the following (if it is empty) -
               //this is required by cookie validation
            'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
         ],
         'cache' => [
            'class' => 'yii\caching\FileCache',
         ],
         'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
         ],
         'errorHandler' => [
            'errorAction' => 'site/error',
         ],
         'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
         ],
         'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
               [
                  'class' => 'yii\log\FileTarget',
                  'levels' => ['error', 'warning'],
               ],
            ],
         ],
         'urlManager' => [ 
            'showScriptName' => false, 
            'enablePrettyUrl' => true 
         ], 
         'db' => require(__DIR__ . '/db.php'), 
      ], 
      'modules' => [
         'hello' => [
            'class' => 'app\modules\hello\Hello',
         ],
      ],
      'params' => $params,
   ];
   if (YII_ENV_DEV) {
      // configuration adjustments for 'dev' environment
      $config['bootstrap'][] = 'debug';
      $config['modules']['debug'] = [
         'class' => 'yii\debug\Module',
      ];
      $config['bootstrap'][] = 'gii';
      $config['modules']['gii'] = [
         'class' => 'yii\gii\Module',
      ];
   }
   return $config;
?>

Nous venons d'activer le pretty URL format et ont désactivé le nom du script d'entrée.

Step 2 - Maintenant, si vous tapez http://localhost:8080/site/about dans la barre d'adresse du navigateur Web, vous verrez la jolie URL en action.

Notez que l'URL n'est plus http://localhost:8080/index.php?r=site/about.