Yii - Utilisation des contrôleurs

Les contrôleurs des applications Web doivent s'étendre de yii\web\Controllerou ses classes enfants. Dans les applications console, ils doivent s'étendre à partir de yii \ console \ Controller ou de ses classes enfants.

Créons un exemple de contrôleur dans le controllers dossier.

Step 1 - À l'intérieur du Controllers dossier, créez un fichier appelé ExampleController.php avec le code suivant.

<?php 
   namespace app\controllers; 
   use yii\web\Controller; 
   class ExampleController extends Controller { 
      public function actionIndex() { 
         $message = "index action of the ExampleController"; return $this->render("example",[ 
            'message' => $message 
         ]); 
      } 
   } 
?>

Step 2 - Créez un exemple de vue dans le views/exampledossier. Dans ce dossier, créez un fichier appeléexample.php avec le code suivant.

<?php 
   echo $message; 
?>

Chaque application dispose d'un contrôleur par défaut. Pour les applications Web, le site est le contrôleur, tandis que pour les applications console, c'est l'aide. Par conséquent, lorsque lehttp://localhost:8080/index.phpL'URL est ouverte, le contrôleur de site traitera la demande. Vous pouvez modifier le contrôleur par défaut dans la configuration de l'application.

Considérez le code donné -

'defaultRoute' => 'main'

Step 3 - Ajoutez le code ci-dessus à ce qui suit config/web.php.

<?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'], 
               ], 
            ], 
         ], 
         'db' => require(__DIR__ . '/db.php'), 
      ], 
      //changing the default controller 
      'defaultRoute' => 'example', 
      '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; 
?>

Step 4 - Type http://localhost:8080/index.php dans la barre d'adresse du navigateur Web, vous verrez que le contrôleur par défaut est l'exemple de contrôleur.

Note - Les ID de contrôleur doivent contenir des lettres anglaises en minuscules, des chiffres, des barres obliques, des tirets et des traits de soulignement.

Pour convertir l'ID de contrôleur en nom de classe de contrôleur, procédez comme suit:

  • Prenez la première lettre de tous les mots séparés par des tirets et transformez-la en majuscules.
  • Supprimez les traits d'union.
  • Remplacez les barres obliques par des barres obliques inversées.
  • Ajoutez le suffixe du contrôleur.
  • Ajoutez au préalable l'espace de noms du contrôleur.

Exemples

  • la page devient app\controllers\PageController.

  • post-article devient app\controllers\PostArticleController.

  • l'utilisateur / post-article devient app\controllers\user\PostArticleController.

  • userBlogs / post-article devient app\controllers\userBlogs\PostArticleController.