Yii - Formati URL

Quando un'applicazione Yii elabora un URL richiesto, in primo luogo, analizza l'URL in una rotta. Quindi, per gestire la richiesta, questa route viene utilizzata per istanziare l'azione del controller corrispondente. Questo processo è chiamatorouting. Il processo inverso è chiamato creazione dell'URL. IlurlManageril componente dell'applicazione è responsabile del routing e della creazione dell'URL. Fornisce due metodi:

  • parseRequest() - Analizza una richiesta in un percorso.

  • createUrl() - Crea un URL da un determinato percorso.

Formati URL

Il urlManager il componente dell'applicazione supporta due formati di URL:

  • Il formato predefinito utilizza un parametro di query r per rappresentare il percorso. Ad esempio, l'URL/index.php?r=news/view&id=5 rappresenta il percorso news/view e il id parametro di query 5.

  • Il grazioso formato URL utilizza il percorso aggiuntivo con il nome dello script di immissione. Ad esempio, nell'esempio precedente, il formato carino sarebbe/index.php/news/view/5. Per utilizzare questo formato è necessario impostare le regole URL.

Per abilitare il grazioso formato URL e nascondere il nome dello script di immissione, segui questi passaggi:

Step 1 - Modifica il file config/web.php file nel modo seguente.

<?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;
?>

Abbiamo appena abilitato il pretty URL format e hanno disabilitato il nome dello script di immissione.

Step 2 - Ora, se digiti http://localhost:8080/site/about nella barra degli indirizzi del browser web, vedrai il grazioso URL in azione.

Si noti che l'URL non è più http://localhost:8080/index.php?r=site/about.