[Yii Framework] Membuat Menu Dinamis

Menu dinamis yang saya maksud adalah menu yang bisa berubah-ubah di tampilkan atau tidak sesuai dengan user yang sedang mengakses web app kita. Contoh yang saya paparkan disini sendiri sebenarnya saya tiru dari aplikasi “Blog” yang ada di dalam framework Yii sendiri…

Berikut step-step membuat menu dinamis:

  • Pada protected/components, buatlah sebuah folder baru, misal “views”.
  • Buat sebuah file baru bernama misal :”menuku.php”. Lalu isi dengan baris menu, misal :
<ul>
	<li><?php echo CHtml::link('Kelola User',array('user/index')); ?></li>
	<li><?php echo CHtml::link('Kelola Data1',array('data1/index')); ?></li>
	<li><?php echo CHtml::link('Kelola Data2',array('data2/index')); ?></li>
	<li><?php echo CHtml::link('Kelola Data3',array('data3/index')); ?></li>
	<li><?php echo CHtml::link('Kelola Data4',array('data4/index')); ?></li>
</ul>
  • Pada “protected/components”, buatlah sebuah file baru misal “Menuku.php”. Isi dengan code berikut:
<?php

Yii::import('zii.widgets.CPortlet');

class Menuku extends CPortlet
{
	public function init()
	{
		$this->title="Kelola Data";
		parent::init();
	}

	protected function renderContent()
	{
		$this->render('menuku');
	}
}
  • Buka file pada “protected/views/layouts/column2.php”
  • Untuk bisa menampilkan menu yang dimaksud, masukkan code berikut:
		<div class="sidemenu">			
			<?php $this->widget('MenuDokumen'); ?>
		</div>
  • Nah, code di atas sudah bisa menampilkan menu di tampilan kita. Hanya saja menu tersebut belum dinamis berdasarkan user yang login ke dalam web app kita.
  • Untuk membuat nya dinamis, ubah code di atas menjadi seperti berikut:
		<div class="sidemenu">			
			<?php if(Yii::app()->user->getLevel()<=2) $this->widget('MenuDokumen'); ?>
		</div>

Penjelasan : code di atas akan menampilkan menu yang kita maksud jika user login dengan level 2. Yah, tentunya level 2 yang saya maksud disini sudah saya definisikan  sesuai kebutuhan saya. Tentu anda bisa merubahnya dengan kebutuhan anda..

Selesai… Selamat mencoba..

Semoga membantu…😀

25 Responses to [Yii Framework] Membuat Menu Dinamis

  1. wongcakep says:

    Untuk ngetesnya gmn Mas Bro?…

    #masih newbie neh…😀

  2. sabitzhabit says:

    tinggal di buat aja di aplikasi yii yg udah d buat mas..

  3. wongcakep says:

    udah ane buat Mas Bro tp ga tau cara nampilinnya dbrowser gmn?…

    mohon bantuannya…

  4. sabitzhabit says:

    mksd ny nampilin gmana gan? klo mau nampilinnya tinggal tambahin code berikut aja gan sesuai dg postingan d atas :

    widget(‘MenuDokumen’); ?>
  5. Aldi says:

    Gan .. Ane bingung abizz nih !!

    yii itu apa si gan ??

    termasuk php juga yaa ..???

    terus belajarnya dimana ..gan ???

    tolong kirim jawabanya ke email saya ya mass ..

    aldi_fe@yahoo.com

    makasih banyak gann !!!

  6. silahkan donloat ebook yg udah saya buat gan : https://sabitlabscode.wordpress.com/2012/01/02/free-ebook-yii-framework-indonesia/
    klo udah di pelajari dan ada yg mentok, silahkan tanya lagi gan..

  7. daeng says:

    gan, kalo membuat menu dinamis dari database caranya gimana gan

  8. agan ambil nilai yang agan butuh ke database, trus pindahin ke sebuah array ssuai dengan field2 yg ada di menu..

  9. daeng says:

    bisa dicontoin ga gan

  10. di set aja di menunya:
    $kat=array();
    $kategori=NamaModel::model()->findAll();
    foreach ($kategori as $a=>$aa)
    {
    $kat[$a]=array(‘label’=>$aa[“attributeLabel”],’url’=>array(‘namaController/view’,’id’=>$aa[“attributeId”]));
    }

    trus array di atas langsung di lempar ke menu..

  11. Pingback: [Yii Framework] Menu Dinamis dengan RBAC menggunakan Rights Extension « Sabitlabscode

  12. Jundan says:

    kang ane coba bikin aplikasi forum yg ada di ebook . Pada saat mau lihat menu manage user ko ada tulisan “Error 403 you are not authorized to perform this action” kenapa ya kang ?

  13. agan ga dikasih akses utk ngakses action nyo.. itu kayak nya karena agan login ga sebagai admin..

  14. awik says:

    masih bingung mas, boleh di jelasin
    Yii::import(‘zii.widgets.CPortlet’); untuk apa
    terus function init(); juga untk apa
    AR nya narohnya di mana mas

    tengkyu

  15. itu manggil widget bawakan dari Yii nya mas.. disana udah saya buat dimana narok2 kode nya mas..

  16. tom cruise says:

    gan…koq gak ada pengaruh’a sama sekali iia…??? mohon pencerahan’a gan…padahal udah mengikuti langkah” yang diatas…

  17. ga ada pengaruh nya gimana gan? ada error?

    Kunjungi Juga Farifam.com untuk tutorial dan forum Yii Framework yang direspon lebih cepat dari di blog ini..

  18. Pingback: Menu Dinamis dengan RBAC menggunakan Rights Extension

  19. Heng Wendy says:

    Gan, bermasalah di getLevel() nya nich muncul pesan
    RWebUser and its behaviors do not have a method or closure named “getLevel”.

  20. Martine says:

    Maaf gan mau tanya, saya lagi coba membuat mainmenu yang punya submenu menggunakan database
    tapi saya mengalami kesulitan untuk membuat dropdownnya maklum gan newbie, dengan data sebagai berikut :

    ////////////////////////////////////////////////////////////
    ini databasenya

    CREATE TABLE mainmenu (
    menu_id int auto_increment PRIMARY KEY NOT NULL,
    mainmenu_name varchar(50) NOT NULL,
    url varchar(100) NOT NULL
    );

    CREATE TABLE submenu (
    submenu_id int auto_increment PRIMARY KEY NOT NULL,
    menu_id int NOT NULL,
    submenu_name varchar(50) NOT NULL,
    url varchar(100) NOT NULL,
    FOREIGN KEY (menu_id) REFERENCES mainmenu(menu_id)
    );

    /////////////////////////////////////////////////////////////
    protected/components/ActiveMenu.php

    order = ‘menu_id asc’;

    $items = Mainmenu::model()->findAll($criteria);

    foreach ($items as $item)
    $this->items[] = array(‘label’ => $item->mainmenu_name, ‘url’ =>$item->url);

    parent::init();

    }

    }

    ///////////////////////////////////////////////////////////
    untuk menampilkannya

    $this->widget(‘application.components.ActiveMenu’);

    //////////////////////////////////////////////////////////

    mohon bantuannya gan,..
    Trimakasih,…

  21. eva says:

    Kang, saya sudah coba script nya, tapi kenapa ya saya ga bisa ngerender view ‘menuku’ padahal di folder view/site ada file view dengan nama menuku? dan satu lagi, kenapa manggil nama widget nya ‘MenuDokumen’ bukan ‘Menuku’?

    Makasih kang, saya baru belajar dan masih bingung dengan Yii hehe

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: