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.
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.
Coba kita lihat hasilnya di database.
Selanjutnya kita menguji action View nya dengan cara memanggil action tersebut dan menambahkan opsi parameter ID data 1001 pada tabel Posts.
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.