February 11, 2018

Cara Membuat Console Command di Framework Yii2

Assalamualaikum wr wb, halo para pembaca yang budiman, pada kesempatan kali ini saya akan membagikan ilmu dan tutorial tentang Cara Membuat Console Command di Framework Yii2. Tak habis-habis rasanya terus mengulas fitur dan keunggulan dari Framework Yii2. Karena kelengkapan fitur yang dimiliki framework inilah yang membuat saya jatuh hati. Saya mempercayakan pengerjaan project-project yang saya handle selama 3 tahun menggunakan Framework Yii2 ini.

Salah satu fitur yang saya sukai dari Framework Yii2 adalah bisa menjalankan fungsi melalui console atau terminal. Biasanya fitur ini saya gunakan untuk mengecek atau mengupdate data secara otomatis atau berkala dan di padukan penggunaannya menggunakan CRON di Linux. Oke, untuk lebih jelasnya kita mulai nyekrip.

Cara Membuat Console Command di Framework Yii2

Untuk membuat fungsi ini, kita perlu tahu terlebih dahulu dimana lokasi fungsi tersebut di tempatkan. Pada template Yii2 basic maupun advance, letak folder fungsi ini sedikit berbeda.

Jika anda menggunakan template basic, maka letak folder untuk menaruh fungsi console command berada di bawah folder root app dan berada di dalam folder commands/ . Tetapi jika anda menggunakan template advance, maka letak folder untuk menaruh fungsi console command berada di bawah folder root app dan berada di dalam folder console/controllers/ .

Basic Template
root App/
commands/
    TesController.php

Advance Template
Root App/
console/
   controllers/
      TesController.php

Contoh Pertama

Berikut adalah contoh fungsi console command pada template Yii2 basic. Bisa kita lihat, untuk class HelloController akan meng extends class dari yii\console\Controller.

<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace app\commands;

use yii\console\Controller;

/**
 * This command echoes the first argument that you have entered.
 *
 * This command is provided as an example for you to learn how to create console commands.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class HelloController extends Controller
{
    /**
     * This command echoes what you have entered as the message.
     * @param string $message the message to be echoed.
     */
    public function actionIndex($message = 'hello world')
    {
        echo $message . "\n";
    }
}

Untuk mengeksekusi nya anda bisa lihat pada screenshot di bawah ini.

Cara Membuat Console Command di Framework Yii2

Cara Membuat Console Command di Framework Yii2

Contoh Kedua

Untuk contoh kedua ini saya akan membuat sebuah fungsi menggunakan console command yang memproses sebuah insert dan view data dari database. Saya akan menggunakan tabel post dengan struktur sebagai berikut.

+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int(11)      | NO   | PRI | NULL    | auto_increment |
| author_id   | int(11)      | NO   |     | NULL    |                |
| title       | varchar(255) | NO   |     | NULL    |                |
| description | varchar(500) | NO   |     | NULL    |                |
| content     | text         | NO   |     | NULL    |                |
| date        | date         | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
6 rows in set (0,00 sec)

Kemudian saya buat model dengan nama Posts dan terletak di app/models/Posts.php . Kemudian kita buat sebuah controller dengan nama TesController dan terletak di app/commands/TesController.php . Terdapat dua buah fungsi yaitu actionInsert & actionView terhadap tabel Posts, dan penampakan skrip nya adalah sebagai berikut.

<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace app\commands;

use yii\console\Controller;
use app\models\Posts;
/**
 * This command echoes the first argument that you have entered.
 *
 * This command is provided as an example for you to learn how to create console commands.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class TesController extends Controller
{
    /**
     * This command echoes what you have entered as the message.
     * @param string $message the message to be echoed.
     */
    public function actionInsert()
    {
      	$post = new Posts;
      	$post->author_id = 1;
      	$post->title = "Insert dari console";
      	$post->description = "Saya mencoba insert data ke database melalui console";
      	$post->content = "Mragus.com";
      	$post->date = date('Y-m-d');
      	if($post->save()){
      		echo "data berhasil disimpan";
      	}else{
      		echo "data gagal disimpan";
      	}
    }

    public function actionView($id){
    	$post = Posts::findOne($id);
    	echo $post->description;
    }
}

Untuk mengeksekusinya adalah seperti di bawah ini.

Contoh Ekseskusi Insert Data

Contoh Ekseskusi Insert Data

Coba kita lihat hasilnya di database.

Data pada database hasil dari Insert melalui Console

Data pada database hasil dari Insert melalui Console

Selanjutnya kita menguji action View nya dengan cara memanggil action tersebut dan menambahkan opsi parameter ID data 1001 pada tabel Posts.

Mengeksekusi action view pada console command

Mengeksekusi action view pada console command

Cukup mudah bukan gan, selanjutnya anda bisa mengkreasikan sendiri fungsi tersebut sesuai dengan kebutuhan yang anda perlukan. Sekian tutorial dari saya ini, semoga dapat bermanfaat. Kritik dan sarannya saya tunggu untuk kesempurnaan tulisan ini dan masukan untuk saya pribadi.

Terimakasih.

Agus Wiji Suhariono

Memulai menulis Blog pada bulan November dari Tahun 2015. Penulis merupakan alumni dari Politeknik Negeri Malang angkatan 2011 Program Studi Manajemen Informatika, Jurusan Elektro. Penulis memulai menekuni dunia programming mulai tahun 2014 dan sekarang bekerja di Pemerintahan sebagai IT Staff.

You may also like...

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock