Programmer Notes

modal form yii 2.0

Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

view

index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
use yii\bootstrap\Modal;
use yii\helpers\Url;
...
<?= Html::button('Tambah Data', ['value' => Url::to(['create']),
'class' => 'btn btn-success', 'id' => 'modalButton']) ?>

Modal::begin([
'header' => '<h4>Tambah Data</h4>',
'id' => 'modal',
'size' => 'modal-sm',
]);
echo "<div id='modalContent'></div>";
Modal::end();
...

Read More

mengubah struktur direktori yii 2.0 basic

Secara default untuk mengakses aplikasi yii 2.0 basic melalui url: http://localhost/nama_aplikasi_anda/web. Tutorial ini akan menjelaskan cara mengubahnya, agar dapat diakses langsung melalui url: http://localhost/nama_aplikasi_anda.

struktur direktori & file

  1. Tambahkan direktori dengan nama _protected, assets dan themes.
  2. Pindahkan semua isi direktori (tidak termasuk direktori web), ke dalam direktori _protected.
  3. Pindahkan semua isi direktori web ke luar. Direktori web sudah tidak diperlukan sehingga bisa dihapus.
  4. Pindahkan direktori css, js dan images ke dalam direktori themes.

    Read More

admin lte yii 2.0

instal admin lte

composer require dmstr/yii2-adminlte-asset “^2.1”

konfigurasi

Tambahkan konfigurasi berikut pada file web.php pada direktori \config.

web.php
1
2
3
4
5
6
7
8
9
'components' => [
'view' => [
'theme' => [
'pathMap' => [
'@app/views' => '@vendor/dmstr/yii2-adminlte-asset/example-views/yiisoft/yii2-app'
],
],
],
],

Read More

web client yii 2.0

Instal yii basic

1
composer create-project --prefer-dist yiisoft/yii2-app-basic basic

Create model

Pada latihan ini kita akan membuat tabel baru dengan nama “alarm”. Struktur tabel seperti blok kode berikut.

1
2
3
4
5
6
CREATE TABLE "public"."alarm" (
"id" int2 NOT NULL DEFAULT nextval('alarm_id_seq'::regclass),
"waktu" varchar(255) COLLATE "pg_catalog"."default",
"kamera" varchar(255) COLLATE "pg_catalog"."default",
"snapshot" varchar(255) COLLATE "pg_catalog"."default"
)

Gunakan generator GII untuk membuat model dari tabel “alarm” yang telah dibuat di atas.

Instal HTTP Client Extension for Yii 2

1
php composer.phar require --prefer-dist yiisoft/yii2-httpclient

Read More

dependent dropdown yii 2.0

Dependent dropdown yang dimaksudkan adalah metode untuk merelasikan (saling bergantung) beberapa dropdown. Asumsi bahwa terdapat tiga tabel, yaitu: jemaat, sektor dan unit. Struktur masing-masing tabel dapat dilihat pada blok kode berikut.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE `jemaat`  (
`id` int(11) NOT NULL AUTO_INCREMENT,
`nama_jemaat` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
PRIMARY KEY (`id`) USING BTREE
)

CREATE TABLE `sektor` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`jemaat_id` smallint(6) NOT NULL,
PRIMARY KEY (`id`) USING BTREE
)

CREATE TABLE `unit` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL,
`jemaat_id` smallint(6) NULL DEFAULT NULL,
`sektor_id` smallint(6) NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
)

instal widget depdrop

Gunakan composer untuk menginstal widger depdrop.

1
php composer.phar require kartik-v/yii2-widget-depdrop "@dev"

controller

Tambahkan kode berikut pada controller form (UnitController.php)

UnitController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
...
use app\models\Sektor;
...
//menampilkan list sektor pada dropdown sektor
public function actionSektor() {
$out = [];
if (isset($_POST['depdrop_parents'])) {
$parents = $_POST['depdrop_parents'];
if ($parents != null) {
$jemaat_id = $parents[0];
$out = Sektor::getSektorList($jemaat_id);
return json_encode(['output'=>$out, 'selected'=>'']);
}
}
return json_encode(['output'=>'', 'selected'=>'']);
}
...

model

Tambahkan fungsi getSektorList() dan parameter jemaat_id pada model Sektor.

Sektor.php
1
2
3
4
5
6
7
8
9
public static function getSektorList($jemaat_id)
{
$sektors = self::find()
->select(['id', 'name'])
->where(['jemaat_id' => $jemaat_id])
->asArray()
->all();
return $sektors;
}

view

Kemudian pada view _form tambahkan baris kode berikut.

_form.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
...
use kartik\depdrop\DepDrop;
use yii\helpers\Url;
...

$jemaats = Jemaat::find()->select('nama_jemaat')->indexBy('id')->column();
echo $form->field($model, 'jemaat_id')->widget(Select2::classname(), [
'data' => $jemaats,
'options' => ['id' => 'jemaat-id', 'prompt' => 'Pilih Jemaat'],
]);?>

echo $form->field($model, 'sektor_id')->widget(DepDrop::classname(), [
'type'=>DepDrop::TYPE_SELECT2,
'options'=>['prompt' => 'Pilih Sektor'],
'pluginOptions'=>[
'depends'=>['jemaat-id'],
'placeholder'=>'Pilih Sektor',
'url'=>Url::to(['/unit/sektor']),
'loadingText'=>'Loading...',
],

]);
...

virtual host pada xampp di windows

Data domain

Sebagai contoh nama domain yang akan dibuat adalah frontend.vms. Untuk menambahkan domain baru tersebut, buka direktori C:\Windows\System32\drivers\etc, kemudian buka file “hosts” menggunakan text editor (notepad atau yang lainnya). Tambahkan perintah seperti pada blok kode berikut.

host
1
2
3
...
127.0.0.1 frontend.vms
...

Read More

hello world yii 2.0

Langkah pertama adalah dengan membuat sebuah file dengan nama HelloController.php pada direktori controllers. File ini berisi class HelloController (nama kelas harus sama dengan nama file). Berikut blok kode lengkap file HelloController.php

HelloController.php
1
2
3
4
5
6
7
8
9
10
<?php
namespace app\controllers;
use yii\web\Controller;

class HelloController extends Controller{
public function actionIndex()
{
return $this->render("welcome");
}
}

Read More

login user dengan database

Fungsi login secara umum adalah salah satu bagian terpenting pada setiap aplikasi. Tutorial ini akan menjelaskan langkah-langkah membuat fungsi login dengan menggunakan model user basic yang ada pada yii framework.

Membuat tabel

Buatlah sebuah tabel dengan nama user_admin. Saran saya agar tidak memberi nama tabel (user), karena nanti akan terbentur dengan user model bawaan yii. Struktur tabel user_admin dapat mengikuti blok kode di bawah:

1
2
3
4
5
6
7
8
CREATE TABLE `user_admin`  (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` varchar(15) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`password` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`authKey` char(64) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL,
`created` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP(0),
PRIMARY KEY (`id`) USING BTREE
)

Read More