Belajar Kode Program

Blog belajar menulis kode program dan aplikasi komputer

Sabtu, 15 April 2017

Menggunakan Helpers Yii

Helpers, sesuai namanya berarti penolong. Dalam konteks pemrograman, helper adalah suatu kelas yang memiliki fungsi-fungsi spesifik seputar nama helper tersebut. Dalam Yii, banyak helper yang harus selalu kita gunakan. Artikel ini menyajikan beberapa helper penting sekaligus fungsi-fungsi pentingnya yang sering dipakai.

Helper yang akan kita bahas kali ini adalah helper URL, HTML, dan Array.


Helper URL

Untuk menggunakan helper ini, pastikan untuk mencantumkan kode ini:

use yii\helpers\Url;

Beberapa fungsi yang kami yakin Anda akan menggunakannya adalah:

$url = Url::toRoute(['site/index', 'param1' => 'value1', 'param2' => 'value2', '#' => 'name']);
// hasilnya: /index.php?r=site%2Findex&param1=value1&param2=value2#name

Selain toRoute(), ada fungsi to() yang penggunaannya sama tetapi dapat juga dipakai untuk URL berupa string. Contoh:

// menampilkan URL saat ini
echo Url::to();

// /images/logo.gif
echo Url::to('@web/images/logo.gif');

// images/logo.gif
echo Url::to('images/logo.gif');

// http://www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', true);

// https://www.example.com/images/logo.gif
echo Url::to('@web/images/logo.gif', 'https');

Ada juga fungsi current untuk melihat URL atau rute saat ini.

// asumsikan $_GET = ['id' => 123, 'src' => 'google'], rute saat ini adalah  "post/view"

// /index.php?r=post%2Fview&id=123&src=google
echo Url::current();

// /index.php?r=post%2Fview&id=123
echo Url::current(['src' => null]);

// /index.php?r=post%2Fview&id=100&src=google
echo Url::current(['id' => 100]);

Fungsi lainnya adalah remember yang akan bermanfaat ketika kita mencoba mendapatkan URL sebelumnya dengan fungsi previous.

// Menyimpan info URL saat ini
Url::remember();

// Menyimpan URL tertentu. Format-nya sama dengan fungsi toRoute() dan to()
Url::remember(['product/view', 'id' => 42]);

// Mengingat URL dengan memberinya nama tertentuk
Url::remember(['product/view', 'id' => 42], 'produk');

Nanti menggunakan fungsi previous-nya adalah:

$url = Url::previous();
$productUrl = Url::previous('produk'); //memanggil URL yang sudah dinamai sebelumnya.

Helper HTML

Untuk menggunakan helper ini, pastikan Anda sudah mencantumkan kode ini:

use yii\helpers\Html;

Beberapa fungsi di antaranya adalah untuk encode dan decode suatu teks:

$userName = Html::encode($user->name);
echo $userName;

$decodedUserName = Html::decode($userName);

Selain itu juga ada fungsi-fungsi untuk membuat form. Silakan simak di artikel lain mengenai form di Yii2.

Membuat hyperlink:
<?= Html::a('Profile', ['user/view', 'id' => $id], ['class' => 'profile-link']) ?>

Membuat tag gambar:

<?= Html::img('@web/images/logo.png', ['alt' => 'My logo']) ?>

Membuat list atau daftar:

<?= Html::ul($posts, ['item' => function($item, $index) {
    return Html::tag(
        'li',
        $this->render('post', ['item' => $item]),
        ['class' => 'post']
    );
}]) ?>

Helper Array

Untuk menggunakan helper ini, pastikan Anda sudah mencantumkan kode ini:

use yii\helpers\ArrayHelper;

Fungsi yang paling banyak dipakai adalah map() alias memetakan:

$array = [
    ['id' => '123', 'nama' => 'aaa', 'class' => 'x'],
    ['id' => '124', 'nama' => 'bbb', 'class' => 'x'],
    ['id' => '345', 'nama' => 'ccc', 'class' => 'y'],
];

$hasil = ArrayHelper::map($array, 'id', 'nama');
// Hasilnya :
// [
//     '123' => 'aaa',
//     '124' => 'bbb',
//     '345' => 'ccc',
// ]

$hasil = ArrayHelper::map($array, 'id', 'nama', 'class');
// hasilnya:
// [
//     'x' => [
//         '123' => 'aaa',
//         '124' => 'bbb',
//     ],
//     'y' => [
//         '345' => 'ccc',
//     ],
// ]

Fungsi lain adalah mendapatkan nilai dari array dengan cara yang mudah:

class User
{
    public $nama = 'Alex';
}

$array = [
    'foo' => [
        'bar' => new User(),
    ]
];

$nama = ArrayHelper::getValue($array, 'foo.bar.nama');

Kemudian juga fungsi mengurutkan array:

$data = [
    ['age' => 30, 'name' => 'Alexander'],
    ['age' => 30, 'name' => 'Brian'],
    ['age' => 19, 'name' => 'Barney'],
];
ArrayHelper::multisort($data, ['age', 'name'], [SORT_ASC, SORT_DESC]);

Atau jika fungsi anonim menjadi seperti ini:

ArrayHelper::multisort($data, function($item) {
    return isset($item['age']) ? ['age', 'name'] : 'name';
});

Lalu juga fungsi mengecek jenis array, asosiatif atau indeks:

// no keys specified
$indexed = ['Qiang', 'Paul'];
echo ArrayHelper::isIndexed($indexed);

// all keys are strings
$associative = ['framework' => 'Yii', 'version' => '2.0'];
echo ArrayHelper::isAssociative($associative);

Menggabungkan array:

$result = ArrayHelper::merge($array1, $array2);

Konversi ke bentuk array:

$posts = Post::find()->limit(10)->all();
$data = ArrayHelper::toArray($posts, [
    'app\models\Post' => [
        'id',
        'title',
        // the key name in array result => property name
        'createTime' => 'created_at',
        // the key name in array result => anonymous function
        'length' => function ($post) {
            return strlen($post->content);
        },
    ],
]);

Demikian sekelumit tentang helpers di Yii2.

Referensi:


Tidak ada komentar:

Posting Komentar