[Yii2]Export Ke Excel menggunakan PhpSpreadsheet

April 22, 2017

Ok langsung aja nih, kamu harus install dulu extensionnya disini http://phpspreadsheet.readthedocs.io/en/develop/ , na untuk penggunanya di Yii2 sebagai berikut

use PhpOffice\PhpSpreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

...

public function actionExportexcel()

{

$spreadsheet = new PhpSpreadsheet\Spreadsheet();
$worksheet = $spreadsheet->getActiveSheet();

//Menggunakan Model

$database =\common\models\RefJafung::find()
->select('kode_jafung,jenis_jafung')
->all();

//JIka menggunakan DAO , gunakan QueryAll()

/*

$sql = "select kode_jafung,jenis_jafung from ref_jafung"

$database = Yii::$app->db->createCommand($sql)->queryAll();

*/

$database = \yii\helpers\ArrayHelper::toArray($database);
$worksheet->fromArray($database, null, 'A4');

$writer = new Xlsx($spreadsheet);

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="download.xlsx"');
header('Cache-Control: max-age=0');
$writer->save('php://output');

}

Ok begitu aja sih share dari saya, maklum masih belajar Yii


[Yii2]Pengaturan word wrap gridview

April 19, 2017

langsung aja nih, mungkin teman teman pada sudah tau, tp sebagai catatan kecil saya aja sih siapa tau lupa cara pengaturan word wrap di gridview di yii2, sebenernya udah otomtis ga perlu lagi pakai ‘class’=>style : word-wrap’ ,naa begini jadi cukup tambahkan ini


'contentOptions' => ['style' => 'width:auto; white-space: normal;'],

di dalam column, misal


'columns' => [
['class' => 'yii\grid\SerialColumn',
'contentOptions' => ['style' => 'width:auto; white-space: normal;'],
],
[
'header'=>'Nip',
'contentOptions' => ['style' => 'width:50%; white-space: normal;'],
'value'=> function ($model){
return $model['nippeg'];

}
],

...

Ok begitu aja sih om


Bot telegram dengan Yii2

Februari 7, 2017

ok langsung aja yaa , kita gunakan Api telegram disini https://core.telegram.org/  untuk bisa mengakses api nya, kita membutuhkan botfather layaknya CS dia akan kasih token yang sebelumnya kita membuat akun bot terlebih dulu dari botfather bisa dicek disini https://rubahmania.wordpress.com/2017/01/31/bot-telegram-dengan-foxpro/ . naa untuk di Yii saya gunakan yii2 basic, saya copas dari sini http://cintaprogramming.com/2015/07/18/membuat-bot-telegram/ terus saya sesuaikan dengan yii menggunakan httpclient dan membuat controller yang saya taruh dibawah folder commands


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

namespace app\commands;
use Yii;
use yii\console\Controller;
use app\models\Yiibot;
use yii\data\ActiveDataProvider;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\httpclient\Client;
/**
* 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 YiibotController extends Controller
{
/**
* This command echoes what you have entered as the message.
* @param string $message the message to be echoed.
*/
public function actionIndex()
{
while (true) {
$this->processOne();
}
}

protected function requesturl($method)
{
// $method = $method;
return 'https://api.telegram.org/bot'.Yii::$app->params['token'].'/'.$method;
}

protected function getUpdates($offset)
{
$url = $this->requesturl("getUpdates")."?offset=".$offset;
$resp = file_get_contents($url);
$result = json_decode($resp, true);
if ($result["ok"]==1)
return $result["result"];
return [];
}

protected function sendReply($chatid, $msgid, $text)
{
$data = [
'chat_id' => $chatid,
'text' => $text,
'reply_to_message_id' => $msgid

];

$client = new Client();
$response = $client->createRequest()
->setMethod('post')
->setUrl($this->requesturl('sendMessage'))
->addHeaders([
'content-type' => 'application/x-www-form-urlencoded',

])
->setData($data)
->send();
if ($response->isOk) {

$result= $response->content;
}

print_r($result);
}

protected function createResponse($text)
{
return "definisi " . $text;
}


protected function processMessage($message)
{
$updateid = $message["update_id"];
$message_data = $message["message"];
if (isset($message_data["text"])) {
$chatid = $message_data["chat"]["id"];
$message_id = $message_data["message_id"];
$text = $message_data["text"];
$response = $this->createresponse($text);
$this->sendreply($chatid, $message_id, $response);
}
return $updateid;
}


protected function processOne()
{
$update_id = 0;

if (file_exists("last_update_id")) {
$update_id = (int)file_get_contents("last_update_id");
}

$updates = $this->getupdates($update_id);

foreach ($updates as $message)
{
$update_id = $this->processmessage($message);
}
file_put_contents("last_update_id", $update_id + 1);
}
}

selanjutkan , buka command line (cmd) masuk kedalam folder rootnya

capture

akan jalan terus,kemudian chat deh bot telegram yang dibuat 🙂


Preview Image Sebelum Upload Image Ke Database

Oktober 14, 2016

langsung aja nih 🙂 hemat kouta,bikin input filenya,


<input id="selectedFile" type="file" class="btn btn-primary btn-block" style="display: none;"name="foto" onchange="uploadImage(this)" data-target="#aImgShow" />
<a href="#" class="btn btn-primary btn-block" onclick="document.getElementById('selectedFile').click();"><b>Upload Foto</b></a>

dan ini js nya


var imageTypes = ['jpeg', 'jpg', 'png']; //Validate the images to show
function showImage(src, target)
{
var fr = new FileReader();
fr.onload = function(e)
{
target.src = this.result;
};
fr.readAsDataURL(src.files[0]);

}

var uploadImage = function(obj)
{
var val = obj.value;
var lastInd = val.lastIndexOf('.');
var ext = val.slice(lastInd + 1, val.length);
if (imageTypes.indexOf(ext) !== -1)
{
var id = $(obj).data('target');
var src = obj;
var target = $(id)[0];
showImage(src, target);
}
else
{

}
}

OK moga sukses kawan (y)

 


[Yii 2]Menampilkan dan Input tanggal ke Mysql

Oktober 11, 2016

OK langsung aja yaa, naa biasanya klo mau menginputkan tanggal di mysql format standar mysql adalah yyyy-mm-dd , sedangkan inputan kita tanggal di halaman web formatnya dd-mm-yyyy , dan juga biasanya kalau menampilkan tanggal dari database yang muncul formatnya yyyy-mm-dd bukan dd-mm-yyyy, maka dari itu kita harus mengubahnya di model , berikut sintaxnya


public function afterFind ()
{
// Tampil dengan format DMY
$this->tanggal = strtotime ($this->tanggal);
$this->tanggal = date ('d-m-Y', $this->tanggal);

parent::afterFind ();
}

public function beforeValidate ()
{
// simpan dengan format YMD
$this->tanggal = strtotime ($this->tanggal);
$this->tanggal = date ('Y-m-d', $this->tanggal);

return parent::beforeValidate ();
}

Ok tarus sintak itu di model yang ada field tanggalnya 🙂 ok mg sukses selalu buat kalian 🙂