Tags

, , ,

Lanjutan dari tulisan sebelumnya tutorial penggunaan yii2-admin.

Instalasi

Cara install yang paling mudah tentunya denga composer.

composer require mdmsoft/yii2-admin "~2.0"

Atau tambahkan di bagian require di file composer.json

"mdmsoft/yii2-admin": "~2.0"

Lalu kemudian lakukan composer update. Cara lainnya -walau sangat tidak disarankan- adalah dengan mengunduh source-nya di sini. Setelah download, extrak filenya ke sebarang tempat lalu tambahkan alias di config aplikasi.

'aliases' => [
    ...
    '@mdm/admin' => 'path/to/extrak/dir'
],

Konfigurasi

Untuk penggunaan paling umum, konfigurasi yang harus ditambahkan cukup simpel saja.

return [
    'modules' => [
        'admin' => [
            'class' => 'mdm\admin\Module',
            ...
        ]
        ...
    ],
    ...
    'components' => [
        ...
        'authManager' => [
            'class' => 'yii\rbac\PhpManager', // or use 'yii\rbac\DbManager'
        ]
    ],
    'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
            'site/*', // tambahkan action-action yg lain di sini
        ]
    ],
];

Konfigurasi di atas umumnya sudah mencukupi untuk kebutuhan dasar. Untuk pengaturan menu, pengaturan layout dan lain-lain, silakan selengkapnya baca di sini.
Jika menggunakan authManager database, jangan lupa untuk melakukan migrate. Pertama-tama, ubah dulu class untuk authManager menjadi ‘yii\rbac\DbManager’, setelah itu jalankan di terminal

php yii migrate -p=@yii/rbac/migrations

Ada kalanya kita ingin menyimpan rbac di database yang berbeda dengan database utama. Maka kita perlu untuk menset property db dari authManager.

        'authManager' => [
            'class' => 'yii\rbac\DbManager',
            'db' => ['dsn' => 'sqlite:@runtime/rbac.sqlite'], // menyimpan di sqlite
        ]

Menggunakan Menu manager.

Salah satu fitur yang ditambahkan oleh yii2-admin adalah menu manager. Fitur ini digunakan untuk menggenerate menu sesuai dengan hak akses user yang nantinya akan dipakai di Nav widget. Untuk mengaktifkan fitu ini, maka kita harus menggenerate tabelnya lebih dahulu.

php yii migrate -p=@mdm/admin/migrations

Kodenya di layout/main.php

use mdm\admin\components\MenuHelper;
use yii\bootstrap\Nav;

echo Nav::widget([
    'items' => MenuHelper::getAssignedMenu(Yii::$app->user->id)
]);

User Management

Untuk yang menggunakan template yii2-app-advanced, fitur ini mungkin tidak terlalu berguna karena secara default template advanced sudah menyimpan data user ke database. Tetapi untuk pengguna template basic, fitur user management yii2-admin bisa jadi alternatif yang menarik. Untuk mengaktifkannya, kita hanya perlu melakukan migrate

php yii migrate -p=@mdm/admin/migrations

Menu yang ada di user management adalah, signup, login, reset password dan change password.
Fitur ini baru ditambahkan di versi 2.4.

Fitur Baru Yang Lain

Tambahan lainnya di versi 2.4 (dev-master) adalah Helper::checkRoute() dan Helper::filterActionColumn(). Fungsi Helper::checkRoute() digunakan untuk mengecek hak akses user terhadap suatu route. Penggunaannya dalam kode

use mdm\admin\components\Helper;

if(Helper::checkRoute('delete')){
    echo Html::a(Yii::t('rbac-admin', 'Delete'), ['delete', 'id' => $model->name], [
        'class' => 'btn btn-danger',
        'data-confirm' => Yii::t('rbac-admin', 'Are you sure to delete this item?'),
        'data-method' => 'post',
    ]);
}

Kode di atas, jika user punya akses terhadap action delete, maka tampilkan tombol Delete.

Sedangkan fungsi Helper::filterActionColumn() digunakan untuk menfilter button yang ada muncul di grid view sesuai denga hak akses user.

use mdm\admin\components\Helper;

'columns' => [
    ...
    [
        'class' => 'yii\grid\ActionColumn',
        'template' => Helper::filterActionColumn('{view}{delete}{posting}'),
    ]
]