[Yii Framework]Auto Save Attribute

Salah satu hal yang sering terjadi pada saat kita ingin melakukan penyimpanan data ke dalam tabel adalah adanya satu attribut dalam tabel tersebut yang ingin kita simpan secara otomatis. Contoh, pada tabel “berita”, kita ingin menyimpan informasi “pengentri”(orang yang menginput berita) dengan cara aplikasi kita otomatis menyimpan informasi pengentri melalui informasi user yang sedang login di aplikasi kita..

Okeh, tentu saja hal itu bisa di lakukan di Yii Framework..  Pada postingan ini, saya akan lakukan dengan 2 cara yang berbeda. Okeh, mari kita bahas satu persatu:

1. Lewat Controller

Anda bisa melakukannya dengan cara menginsert code nya di dalam controller tepat nya di “function actionCreate()”. Berikut code nya:

	public function actionCreate()
	{
		$model=new NamaModel;
		if(isset($_POST['UserAdmin']))
		{
			$model->attributes=$_POST['NamaModel'];
			$model->pengentri=Yii::app()->user->getId();
			
			if($model->save())
				$this->redirect(array('view','id'=>$model->idModel));
		}
		$this->render('create',array(
			'model'=>$model,
		));
	}

Penjelasan : Disana bisa anda lihat saya menyisipkan satu baris code yang menyimpan attribut pengentry sesuai dengan “id” yang dimiliki oleh user yang sedang login, dengan begitu, user tidak perlu susah-susah menginput nilai “id” nya.

 

2. Lewat Model

Pada “model” ada sebuah fungsi “beforeSave()” dimana semua code yang terdapat di dalam tag “beforeSave()” tersebut akan dijalankan sesaat sebelum aplikasi kita melakukan penyimpanan data pada model tersebut. Dengan itu, anda dapat memanfaatkan “beforeSave()” tersebut untuk melakukan penyimpanan otomatis. Kurang lebih anda dapat menyisipkan code berikut di model anda:

	protected function beforeSave()
	{
		$this->pengentri=Yii::app()->user->getId();
	}

Dengan adanya code tersebut, sebelum program kita melakukan penyimpanan pada model yang kita tuju, ia akan melakukan penyisipan nilai yang informasi user yang login ke dalam attribut “pengentri” .

 

Selesai…. Selamat mencoba…

Semoga membantu 😀

[view] 2 model 1 form… pada yii framework…

Untuk proses create(insert) 2 table dari satu form, anda dapat melihatnya disini. Nah, disini yang akan saya bahas adalah bagaimana cara menampilkan 2 tabel dalam 1 form.

Pertama, pada controller nya pastikan terdapat dua fungsi yang mengembalikan nilai pada kedua model tersebut seperti berikut:

	public function loadModel($id)
	{
		$model=Satu::model()->findByAttributes(array('satusatu'=>$id));
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}
	
	
	public function loadModel2($id)
	{
		$model=Dua::model()->findByAttributes(array('duasatu'=>$id));
		if($model===null)
			throw new CHttpException(404,'The requested page does not exist.');
		return $model;
	}

Untuk “loadModel($id)” itu adalah fungsi yang dihasilkan otomatis pada saat yii framework menggenerate operasi CRUD. Fungsi loadModel itu sendiri akan mengembalikan sebuah nilai yang tabel yang memiliki PK=$id. Nah, karena kita disini akan memanggil juga tabel “Dua” maka kita harus sebuah fungsi yang mengembalikan nilai pada tabel “Dua”. Disinilah peranan dari fungsi “loadModel2($id)”, dimana fungsi tersebut akan mengembalikan nilai pada tabel “Dua” yang memiliki PK=$id.

Setelah itu, kita render nilai dari tabel “Satu” dan tabel “Dua” ke function actionView agar dapat ditampilkan. Code pada fungsi tampil akan menjadi seperti berikut:

	public function actionView($id)
	{
		$this->render('view',array(
			'model'=>$this->loadModel($id),
			'model2'=>$this->loadModel2($id),
		));
	}

Disana terlihat fungsi tersebut merender dua buah model, yaitu “model” dan “model2”. Setelah itu mari kita modifikasi file view nya yang terletak pada protected/views/namaModel/view.php.

Sebelum dilakukan perubahan, code pada halaman tersebut adalah sebagai berikut:

<?php $this->widget('zii.widgets.CDetailView', array(
	'data'=>$model,
	'attributes'=>array(
		'satusatu',
		'satudua',
	),
));

Code diatas hanyalah menampilkan tampilan pada tabel “Satu”, untuk menampilkan tampilan nilai dari tabel “Dua”, cukup anda tambahkan code berikut tepat di bawah code di atas:

$this->widget('zii.widgets.CDetailView', array(
	'data'=>$model2,
	'attributes'=>array(
		'duadua',
	),
));

Code di atas menunjukkan bahwa kita akan menampikan nilai atribut “duadua” pada tabel “Dua”.

Selesai…. Selamat mencoba…

Semoga membantu 😀 ….

Pengaturan sederhana Bing Map pada Windows Phone 7

Biasanya kita ingin mengkonfigurasi tampilan awal Bing map pada aplikasi kita. Berikut adalah beberapa pengaturan sederhana untuk melakukan pengaturan diantaranya pada koordinat mana peta kita akan berpusat, menampilkan tombol zoom in dan zoom out, dan pengaturan zoom default..

Sebelum nya, pastikan anda sudah menambahkan reference nya dengan System.Device. Lalu pada class nya tambahkan

using System.Device.Location;

😀

Ada 2 cara untuk melakukan pengaturan Bing Map pada WP7, satu lewat code nya langsung, dan satu lagi lewat code XAML form nya langsung. Baiklah, kita akan bahas satu persatu..

Yang pertama kita akan coba melakukan pengaturan lewat code di class nya langsung..

Buka mainpage.xaml.cs.

Berikut code untuk melakukan pengaturan Bing map:

            map1.Center = new GeoCoordinate(-2.99103520810604, 104.757377877831);
            map1.ZoomBarVisibility = Visibility.Visible;
            map1.ZoomLevel = 15;
  • Baris pertama digunakan untuk melakukan pengaturan koordinat default pada peta(koordinat di atas saya atur untuk menampilkan peta kota kelahiran saya, Palembang 😀 )
  • Baris kedua digunakan untuk menampilkan tombol zoom in dan zoom out
  • Baris ketiga untuk mengatur tingkat zoom pada peta.
Nah, sedangkan untuk pengaturan langsung lewat code XAML nya, anda bisa merubah tag XAML map nya menjadi seperti berikut:
     <my:Map Height="349" HorizontalAlignment="Left" Margin="9,6,0,0" Name="map1" 
           VerticalAlignment="Top" Width="441" CredentialsProvider="key api anda" 
           Center="-2.99103520810604, 104.757377877831" ZoomBarVisibility="Visible" 
           ZoomLevel="15" />

Selesai, hasil nya nanti akan menjadi seperti berikut:

Yak, disana terlihat peta kota Palembang dan menunjukkan sungai Musi dan Jembatan Ampera :D. Terlihat juga dua buah tombol untuk melakukan zoom in dan zoom out… Tentu anda dapat mencoba pengaturan-pengaturan lainnya. Yang saya paparkan di atas barulah segelintir saja..

Selamat bereksperimen…

Semoga membantu…

User Level Access Dinamis pada yii framework

Sebelumnya saya sudah buat  cara membuat level access rule disini dan disini. Hanya saja cara tersebut akan sangat sulit di lakukan untuk sebuah informasi user(khususnya pelevelan) yang berubah-ubah dan berskala besar. Contoh, misal kita membuat web site untuk suatu universitas, dimana kita hanya mengizinkan mahasiswa pada fakultas tersebut yang boleh mengakses informasi pada fakultas nya sendiri. Nah, sepertinya ga mungkin kita buat user level access nya satu persatu untuk masing-masing fakultas mengingat fakultas pada suatu universitas sangatlah banyak dan besar kemungknan bisa terjadi perubahan pada informasi. Nah, maka dari itu kita akan lakukan dengan cara lain yang dapat melakukan hal tersebut dengan lebih mudah dan cepat.

Pada setiap website, biasanya kita akan membuat sebuah level access untuk halaman “profile user” dimana hanya user tersebut lah yang bisa mengakses informasi tentang dirinya. Untuk menerapkan hal tersebut, kita tidak dapat menggunakan “function accessRule()”(kalo ada yg bisa mohon di share yak :D) untuk membuat batasannya, tetapi kita dapat melakukannya dengan mengedit controller nya tepatnya di function nya masing-masing. Tapi sebelumnya pastikan pada file “protected/components/UserIdentity.php” terdapat function “getId” yang mengembalikain “id” user yang telah login:

	private $_id;
	public function getId()
	{
		return $this->_id;
	}

Fungsi “getId()” tentu dapat anda modifikasi sesuai dengan kebutuhan masing-masing misal getFakultas(),getLevel(), getTerserah(), dll..

Lalu pada controller yang ingin diberikan level access rule nya, buatlah pada function yang ingin diberikan level access nya beberapa modifikasi code seperti berikut:

	public function actionView($id)
	{
		if(Yii::app()->user->getid()==$id)
		{	
			$this->render('view',array(
				'model'=>$this->loadModel($id),
			));	
		}
		else
		{
			$this->redirect(array('salah'));
		}
	}

Penjelasan:

Disana dapat anda lihat anda pernyataan “if(Yii::app()->user->getId()==$id)”, nah itu dilakukan untuk mengizinkan hanya user yang memiliki profil tersebutlah yang dapat mengakses halaman tersebut. Jika tidak, maka user akan dilemparkan ke sebuah halaman “salah” yang sudah anda buat sendiri 😀

Selesai, selamat mencoba…

Semoga membantu 😀 …

Membuat User Level Access pada yii[upgrade]

Sebelum nya saya sudah pernah posting bagaimana cara nya menerapkan user level access pada yii framework disini. Nah, disini saya akan membuat cara yang berbeda. Sebenarnya cara yang saya buat hanya sedikit memodifikasi beberapa hal pada postingan sebelumnya, tapi menurut saya yang ini lebih mudah untuk di buat dan di terpakan. Okeh, pertama-tama buatlah sebuah project yii framework. Setelah itu buatlah operasi CRUD pada tabel yang anda inginkan. Lalu di folder “protected/components” buatlah sebuah file dengan nama “EWebUser.php”. Setelah isi file tersebut dengan code seperti berikut:

<?php
class EWebUser extends CWebUser{
 
    protected $_model;
 
   protected function loadUser()
    {
        if ( $this->_model === null ) {
                $this->_model = MUser::model()->findByPk( $this->id );
        }
        return $this->_model;
    }
    
    function getLevel()
    {
        $user=$this->loadUser();
        if($user)
            return $user->level;
        return 100;
    }
}

Sebelumnya, pastikan di table user anda terdapat sebuah attribut yang digunakan untuk melakukan pe-level-an. Pada project saya sendiri saya memiliki sebuah attribut “level” pada tabel MUser. Dan jangan lupa code di atas harus anda modifikasi pada bagian “MUser” menjadi sesuai dengan nama tabel user anda. Dan setelah kode di atas telah anda buat, anda dapat membuat level access user nya dengan memberikan code berikut di controller yang anda tuju tepatnya di “function accesssRule()”:

array('allow', 
		'actions'=>array('index','view','create','update','admin','delete'),
		'expression'=>'$user->getLevel()<=1',
	),

Yah, dapat anda lihat disana saya membuat “<=” pada level access nya, itu bisa diterapkan karena kita mengambil nilai integer pada “getLevel()” nya. Jadi kita bisa membuat nya denga =,<=,<,>,>= yah silahkan anda bereksperimen…

 

Selesai, selamat mencoba…

Semoga membantu 😀

Set validation rule message pada Yii Framework

Saat belajar IMK(Interaksi Manusia Komputer) kita di ajarkan untuk membuat sebuah aplikasi dengan bahasa yang konsisten. Artinya dalam aplikasi kita harus nya hanya menggunakan satu bahasa saja(Inggris saja/Indonesia saja/dll). Nah, dalam Yii framework bahasa default yang digunakan saat generate code untuk tampilan adalah bahasa Inggris. Okeh, kalo masalah tampilan saya kira kita bisa langsung saja edit di bagian view nya. Tapi untuk masalah pesan kesalahan?? Yah, ini sedikit berbeda. Berikut tips untuk melakukan setting membuat pesan kesalahan pada Yii framework:

Buka project/protected/models/modelYangDituju.php

Setelah itu temukan fungsi rules yang biasa kita gunakan untuk melakukan setting validasi.

	public function rules()
	{
		return array(
			array('level', 'required',
                               'message'=>'Nilai {attribute} harus terisi'),
			array('level', 'length', 'max'=>20,'min'=>5,
                              'tooLong'=>'Nilai {attribute} terlalu panjang',
			      , 'tooShort'=>'Nilai {attribute} terlalu pendek'),
			array('id, level', 'safe', 'on'=>'search'),
		);
	}

Terlihat disana saya menambahkan sedikit code pada masing-masing validasi nya. Yah, itu adalah code untuk melakukan setting pada pesan error nya.  Berikut penjelasannya:

  • (‘message’=>’pesan error’) = ini digunakan untuk menampilkan pesan error
  • (‘tooShort’=>’pesan error terlalu pendek’) = untuk validasi yang melibatkan panjang dari suatu karakter, kita deklarasikan dengan tooShort jika ingin menampilkan pesan bahwa nilai yang dimasukkan terlalu pendek.
  • (‘tooLong’=>’pesan error terlalu pendek’) = validasi untuk karakter yang terlalu panjang.
  • (‘tooBig’=>’Nilai terlalu besar’) = khusus inputan tipe numeric, ini digunakan untuk validasi angka yang terlalu besar.
  • (‘tooSmall’=>’Nilai terlalu besar’)  = khusus inputan tipe numeric juga, ini digunakan untuk validasi angkat yang terlalu kecil.
Oh iya, pada contoh code di atas ada code {attribute}, nah itu digunakan untuk mencetak otomatis nama attribute yang mengalami kesalah inputan..
Okeh… Selesai, selamat mencoba 😀
Semoga membantu…. 😀

[Yii framework] Cara Upload File

Sebelum kita bahas cara membuat fungsi upload file ke server, saya akan jelaskan bahwa bagaimana alur file yang kita upload akan disimpan di dalam database. Okeh, pada postingan ini,  file yang kita upload ke server tidaklah masuk ke dalam database, yang kita masukkan di dalam databse adalah PATH dari file tersebut. Ada cara dimana kita bisa menyimpan suatu file ke dalam database kita yaitu dengan menggunakan type BLOB(Binary Large Object). Dimana file yang akan disimpan ke dalam database akan di konversi terlebih dahulu ke dalam Binary file dan disimpan ke dalam database kita. Memang lebih simpel, tapi menyimpan nya langsung ke dalam database tidaklah baik. Karena menurut pengalaman saya, saat file nya ditampilkan file ny berubah :D. Contoh, saya pernah upload gambar, dan ketika gambar ny mau saya tampilin gambar ny berubah :D.

 

Okeh, udah panjang lebar kita bahas. Mari kita bahas cara coding ny di yii…

Pada models tempat penyimpanan path nya, beri batasan pada rules nya agar hanya data-data bertipe tertentu yang bisa di upload. Berikut cara membuat rules nya:

 public function rules()
    {
        return array(
            array('namaAttributFile', 'file', 'types'=>'jpg, gif, png, pdf'),
        );
    }

tinggal anda masukkan saja tipe file apa saja yang mau anda support untuk upload file nya..

nah, setelah itu kita buat di controller ny perintah untuk melakukan upload file nya. Pada contoh kali ini, saya melakukan upload file pada action “create”, begini contoh code nya:

 public function actionCreate()
    {
        $model=new NamaModel;
        if(isset($_POST['NamaModel']))
        {
            $model->attributes=$_POST['NamaModel'];
            $model->namaAttribute=CUploadedFile::getInstance($model,'namaAttribute');
            if($model->save())
            {
                $model->namaAttribute->saveAs('path/to/localFile');
                $this->redirect(array('view','id'=>$model->id));
            }
        }
        $this->render('create', array('model'=>$model));
    }

Nah, anda tinggal lakukan setting path posisi tempat anda ingin menyimpan file yang anda upload dan contoh di atas sudah bisa menjalankan perintah upload file nya…

Beberapa permasalahan klasik pada upload file adalah dimana kadang kita ingin mengubah nama file yang kita upload sesuai dengan kemauan kita. Dan biasa ny kita juga ingin path dari file yang kita simpan otomatis akan langsung mengarah ke path project kita.. Okeh untuk permasalahan seperti itu, silahkan anda rubah code pada action “create” nya menjadi seperti berikut:

	public function actionCreate()
	{
		$model=new NamaModel;

		if(isset($_POST['NamaModel']))
		{
			$model->attributes=$_POST['NamaModel'];
			$simpanSementara=CUploadedFile::getInstance($model,'namaAttribut');
			if($model->save())
			{
				$simpanSementara->saveAs(Yii::app()->basePath . 
                                              '/../namaFolder/' . $model->id.'.pdf');
				$this->redirect(array('view','id'=>$model->id));
			}
		}

		$this->render('create',array(
			'model'=>$model,
		));
	}

Penjelasan:

Pada contoh diatas, saya menyimpan file yang di upload ke dalam foleder : Project/namaFolder. Kunci nya ada pada kode ini:

 $simpanSementara->saveAs(Yii::app()->basePath . '/../namaFolder/' . $model->id.'.pdf');

Pada code tsb, terlihat bahwa kita melakukan penyimpanan file di dalam Project kita, dan di dalam folder “namaFolder”. Selain itu juga kita mengubah nama file yang kita upload sesuai dengan nama attribut “id” nya, dan kita simpan nama nya bertipe “.pdf”. Silahkan anda konfigurasi sendiri sesuai dg kemauan anda yak 😀

 

Eits.. belum selesai proses ny… kita masih harus edit tampilannya dulu gan 😀 …

Sekarang silahkan buka view nya, dan buka file “form.php”. Di bagian atas form tersebut, ubah code ny menjadi seperti berikut:

<?php $form=$this->beginWidget('CActiveForm', array(
	'id'=>'laporan-form',
	'enableAjaxValidation'=>false,
        'htmlOptions'=>array('enctype'=>'multipart/form-data'),
)); ?>

Dan untuk merubah control “namaAttribut” agar nanti tampilannya kita tinggal klik dan langsung terbuka form yang menyuruh kita memilih folder, maka rubah code nya dari seperti ini:

<?php echo $form->textField($model,'namaAttribute',array('size'=>50,'maxlength'=>50)); ?>

Menjadi seperti ini:

<?php echo $form->fileField($model,'namaAttribute',array('size'=>50,'maxlength'=>50)); ?>

Selesai…

Silahkan anda coba langsung…

Semoga membantu 😀

Read XML dengan Language Integrated Query(LINQ) pada C#

Mungkin kebanyakan dari kita sudah terbiasa menggunakan SQL query untuk melakukan pengelolaan data. Tapi bagaimana jika kita dihadapkan dengan data dengan berupa format lain, pada kasus ini XML file… Yah, di .netframework sendiri sudah ada sebuah cara mudah membaca XML file yang query nya mirip-mirip dengan SQL query, cara tersebut disebut LINQ(Language Integrated Query). Untuk penjelasan LINQ silahkan anda searching di internet yak 😀 , saya disini akan mendemokan sedikit cara menggunakan LINQ untuk membaca XML file..

Okeh, pertama-tama buka visual studio anda, dan buat project baru..

Setelah itu buatlah sebuah file XML dengan cara klik kanan dan pilih new item lalu pilih xml file. Setelah itu isilah XML tersebut dg format seperti berikut:

<?xml version="1.0" encoding="utf-8" ?>
<Indonesia>
  <prov nama="Sumatera Selatan">
    <kota>Palembang</kota>
    <kota>Prabumulih</kota>
  </prov>
  <prov nama="Jawa Barat">
    <kota>Bogor</kota>
    <kota>Depok</kota>
    <kota>Bandung</kota>
  </prov>
  <prov nama="DKI Jakarta">
    <kota>Jakarta Timur</kota>
    <kota>Jakarta Barat</kota>
    <kota>Jakarta Selatan</kota>
    <kota>Jakarta Utara</kota>
  </prov>
</Indonesia>

Setelah itu rancanglah tampilan di Form1 dengan memasukkan 1 buah combobox dan 1 buah datagridview. Sebelumnya, tambahkan code berikut agar dapat menggunakan fitur-fitur LINQ untuk membaca XML file:

using System.Xml;
using System.Xml.Linq;
using System.IO;

Buat sebuah code yang mengarahkan pembacaan file pada file xml yang kita buat tadi :

XDocument data = XDocument.Load(Application.StartupPath + @"\..\..\indonesia.xml");

lalu buatlah sebuah fungsi yang berguna untuk memasukkan list nama-nama provinsi dari file XML :

        private void setCombo()
        {
            var prov = from a in data.Descendants("prov")
                       select a;
            foreach (var b in prov)
            {
                comboBox1.Items.Add(b.Attribute("nama").Value);
            }
            comboBox1.SelectedIndex = 0;
        }

Lalu buat sebuah fungsi yang memasukkan list-list kota-kota dari provinsi yang terpilih seperti berikut:

        private void setData()
        {
            dataGridView1.RowCount = 1;
            var prov = from a in data.Descendants("prov")
                       where a.Attribute("nama").Value == comboBox1.SelectedItem.ToString()
                       select a;

            var kab = from b in prov.Descendants("kota")
                      select b;

            int i = 0;
            foreach (var k in kab)
            {
                this.dataGridView1.RowCount++;
                this.dataGridView1[0, i].Value = k.Value;
                i++;
            }
        }

Lalu masukkan kedua fungsi tersebut di contructor, agar setiap form1 dibuka kedua fungsi tersebut dijalankan. Sehingga contructor nya akan menjadi seperti berikut:

 public Form1()
        {
            InitializeComponent();
            setCombo();
            setData();
        }

Lalu kita masukkan fungsi “setData()” di dalam event combobox_change agar setiap kita memilih provinsi baru, maka datagrid akan berganti isinya sesuai dengan provinsi yang terpilih. Sehingga menjadi seperti berikut:

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            setData();
        }

Selesai…

setelah selesai, maka tampilannya akan seperti berikut:

Selamat mencoba, semoga membantu… 😀

Anda bisa men download source code lengkapnya disini.

Mengetahui waktu proses pada C#

Berikut beberapa cara untuk mengetahui waktu berjalannya suatu proses di dalam sebuah program dalam C#.

Pertama-tama definisikan dulu :   using System.Diagnostics;

Lalu di baris program yang ingin kita ketahui waktu eksekusi ny, kita masukkan code beriktu:

            Stopwatch timerr = new Stopwatch();
            timerr.Start();
            {Code proses yang ingin dihitung waktunya}

            timerr.Stop();

 

Setelah dibuat code tersebut, program akan mencatat waktu yang digunakan saat melakukan proses di dalam program. Jika kita ingin melihat hasilnya(waktu proses), kita dapat menampilkannya dengan cara menampilkan nilai “timerr.Elapsed.ToString();”…

 

Selesai… Selamat mencoba,…

Somoga membantu 😀

Pengaturan halaman home pada user sebelum dan sesudah login pada yii framework

Pada beberapa kasus kadang aplikasi yang kita buat mengharuskan user login terlebih dahulu sebelum user bisa masuk ke dalam aplikasi tersebut. Maka dari itu kita harus melakukan pengaturan seperti berikut :

  • Jika user belum melakukan login, maka dia akan langsung disuguhkan halaman login saat memasuki web aplikasi tersebut.
  • Jika user sudah melakukan login, maka dia akan langsung disuguhkan halaman home.
Baik mari kita modifikasi aplikasi kita….
Pertama-tama silahkan buka controller yang menghandle halaman “login” dan “home” yaitu di “protected/controllers/SiteController.php”. Setelah itu tambahkan kode berikut di atas   “public function actions()”
	/**
	 * @return array action filters
	 */
	public function filters()
	{
		return array(
			'accessControl',
		);
	}

	/**
	 * Specifies the access control rules.
	 * This method is used by the 'accessControl' filter.
	 * @return array access control rules
	 */
	public function accessRules()
	{
		return array(
			array('allow',
				'actions'=>array('error','contact','login','captcha'),
				'users'=>array('*'),
			),
			array('allow',
				'actions'=>array('index','logout','update'),
				'users'=>array('@'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}

Selesai… Berikut  penjelasannya:

Mungkin anda terkejut melihat betapa singkatnya code yang kita tambahkan, sebagian dari anda juga mungkin berpikir bahwa kita akan mengotak-atik bagian views/model. Yah, dalam penjelasan di atas, kita hanya perlu melakukan manipulasi di kode controller. Kita cukup memberi hak akses pada masing-masing halaman yang akan di akses. Jadi kita cukup memberikan access rule pada halaman home dimana kita hanya mengizinkan halaman home hanya bisa di akses oleh user yang telah melakukan login. Jika user belum login, maka secara otomatis user akan dilempar ke halaman login…

Yak, selamat mencoba 😀 ….

Semoga membantu….