Yii - Menggunakan Pengontrol

Pengontrol dalam aplikasi web harus diperpanjang dari yii\web\Controlleratau kelas anaknya. Dalam aplikasi konsol, mereka harus diperluas dari yii \ console \ Controller atau anak kelasnya.

Mari kita buat contoh pengontrol di controllers map.

Step 1 - Di dalam Controllers folder, buat file bernama ExampleController.php dengan kode berikut.

<?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 - Buat tampilan contoh di file views/examplemap. Di dalam folder itu, buat file bernamaexample.php dengan kode berikut.

<?php 
   echo $message; 
?>

Setiap aplikasi memiliki pengontrol default. Untuk aplikasi web, situs adalah pengontrol, sedangkan untuk aplikasi konsol adalah bantuan. Oleh karena itu, saat filehttp://localhost:8080/index.phpURL dibuka, pengontrol situs akan menangani permintaan tersebut. Anda dapat mengubah pengontrol default dalam konfigurasi aplikasi.

Pertimbangkan kode yang diberikan -

'defaultRoute' => 'main'

Step 3 - Tambahkan kode di atas sebagai berikut 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 - Ketik http://localhost:8080/index.php di bilah alamat browser web, Anda akan melihat bahwa pengontrol default adalah pengontrol contoh.

Note - ID Pengontrol harus berisi huruf Inggris dalam huruf kecil, angka, garis miring ke depan, tanda hubung, dan garis bawah.

Untuk mengonversi ID pengontrol ke nama kelas pengontrol, Anda harus melakukan hal berikut -

  • Ambil huruf pertama dari semua kata yang dipisahkan dengan tanda hubung dan ubah menjadi huruf besar.
  • Hapus tanda hubung.
  • Ganti garis miring ke depan dengan garis miring ke belakang.
  • Tambahkan akhiran Controller.
  • Tambahkan ruang nama pengontrol di awal.

Contoh

  • halaman menjadi app\controllers\PageController.

  • pasca-artikel menjadi app\controllers\PostArticleController.

  • pengguna / post-article menjadi app\controllers\user\PostArticleController.

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