Breaking

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

close