Framework PHP sekarang sudah mirip bahasa Ruby, hampir semua widget, module atau extension bisa download dengan menggunakan console. Saya ingin membagi tutorial pembuatan widget untuk chat secara sederhana dengan media GIT dan packagist. Karena Yii2 menggunakan PSR4 maka pembuatan class wajib menggunakan namespace.

Anda bisa lihat contoh repository saya tentang chat di https://github.com/sintret/yii2-chat-adminlte sebagai contoh dan perbandingan.

Untuk namespace sendiri harus memenuhi kualifikasi standart PSR4, contoh lihat di file composer.json, untuk name "name": "sintret/yii2-chat-adminlte" artinya nanti di folder "vendor" akan ada directory "sintret/yii2-chat-adminlte".

Oke langsung aja untuk contoh penggunaannya, di view anda untuk widget seperti berikut ini:

 <?php echo \sintret\chat\ChatRoom::widget([
            'url' => \yii\helpers\Url::to(['/chat/send-chat']),
            'userModel'=>  \app\models\User::className(),
            'userField' => 'avatarImage'
                ]); ?>

Parameter yang akan kita bahas disini adalah url,userModel dan userField.

url : dimana parameter url adalah controller untuk memproses hasil text.

userModel : User Model Class Name, secara default kalau tidak diisi maka akan diambil dari Yii::$app->getUser()->identityClass; class name User yang akan dipakai sesuai dengan session user id yang dipakai, lihat di ChatRoom.php line 38

userField : User attribute dimana gambar source ditampilkan tentu saja sesuia dengan session user masing-masing. Jika anda tidak isi maka secara default avatar yang akan dimunculkan adalah default avatar di Yii::$app->assetManager->publish("@vendor/sintret/yii2-chat-adminlte/assets/img/avatar.png");

Contoh penggunaan di controller, contohnya ada di ChatController function sendChat :

 

public function actionSendChat() {
        if (!empty($_POST)) {
            echo \sintret\chat\ChatRoom::sendChat($_POST);
        }
    }

Jangan lupa untuk menambahkan table chat di database anda :
CREATE TABLE `chat` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `userId` INT(11) DEFAULT NULL,
  `message` TEXT,
  `updateDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=INNODB;

Karena saya tidak ada module maka saya putuskan tidak membuat migration lihat juga di http://www.yiiframework.com/extension/yii2-chat-adminlte/

 

Leave a Comment:



digital_ocean