Showing posts with label yii framework. Show all posts
Showing posts with label yii framework. Show all posts

Wednesday 8 April 2015

Website Gratis Berbasis Yii Framework

Standard
Menurut Ann Rockley, dkk dalam bukunya yang berjudul Managing Enterprise Content: A Unified Content Strategy pengertian CMS atau Sistem manajemen konten adalah perangkat lunak yang digunakan untuk menambahkan atau memanipulasi (mengubah) isi dari suatu situs web.
Dari pengertian diatas saya akan memaparkan website gratis berbasis Yii Framework "siap pakai" (CMS). Banyak programer baru atau orang yang berusaha untuk menjadi programer mencoba-coba framework yang sudah banyak ditawarkan di dunia maya. Banyak pula diantara mereka yang kesulitan untuk belajar framework-framework tersebut salah satunya Yii Framework. Dari studi dilapangan yang menggunakan metode angket dan wawancara dari 250 angket yang disebarkan kepada mahasiswa dengan kosentrasi Teknik Informatika, 209 mahasiswa mengatakan kesulitan dalam mempelajari Yii Framework dan sisanya menjawab mudah dalam mempelajarinya. Kesimpulan dari 209 koresponden menyatakan bahwa mereka kesulitan mempelajari Yii Framework karena kurangnya dokumentasi dari Yii Framework dan belum banyaknya contoh-contoh program atau source code yang bisa mereka dapatkan secara cuma-cuma (gratis). Untuk itu saya tertarik untuk memaparkan website gratis berbasis Yii Framework agar dapat membantu mahasiswa dalam mempelajari Yii Framework secara mudah. Berikut website gratis berbasi Yii Framework:

1. HumHub (Demo | Download)
HumHub merupakan perangkat lunak dengan kategori jejaring sosial yang memiliki tujuan membantu sekelompok orang dalam berinteraksi secara mudah dan cepat. Merupakan perangkat lunak yang ringan, cepat dan menawarkan user-friendly atau tampilan yang mudah digunakan. HumHub dapat membantu meningkatkan bisnis Anda, memperbanyak pelanggan Anda, mengajar siswa atau mengatur klub sepak bola Anda. Beberapa fitur yang ditawarkan perangkat lunak ini diantaranya: notifikasi, monitoring komunitas, dashboard, social tools (Post, comment, follow, like and connect with other), profil pengguna, grup, direktori, file, public access, search, support mobile dan beberapa plugin yang siap digunakan.

2. LimeSurvey (Demo | Download)
LimeSurvey merupakan perangkat lunak yang bergerak dibidang survey untuk mengumpulkan informasi pada hubungan bisnis atau aktifitas Anda. Memiliki slogan "the open source survey application, refreshingly easy and free" dengan tujuan membantu anda dalam membuat suatu survey atau angket dengan mudah, cepat dan gratis. Beberapa fitur dari LimeSurvey diantaranya: Unlimited jumlah survei pada saat yang sama, Unlimited jumlah pertanyaan dalam survei (hanya dibatasi oleh database Anda), Unlimited jumlah peserta untuk survei, Survei multi-bahasa, User-manajemen, Editor WYSIWYG HTML, Manajemen Kuota, Integrasi gambar dan film ke survei, Penciptaan versi survei dicetak, Kondisi pertanyaan tergantung pada jawaban sebelumnya (Logic / Percabangan), Dapat digunakan kembali atau mengubah jawaban, Import pertanyaan, Survei penilaian, Anonymous dan Tidak-Anonymous survei, Kelompok terbuka dan tertutup survei peserta, Pendaftaran publik Opsional untuk survei, Mengirim undangan, pengingat dan token melalui email, Pilihan bagi peserta untuk buffer jawaban untuk melanjutkan survei di lain waktu, Penggunaan cookie dan session, Template editor untuk membuat tata letak halaman Anda sendiri, Tampilan administrasi yang user-friendly, Back-office, Otomatisasi survey tanggal kadaluarsa, Peningkatan fungsi impor dan ekspor untuk teks, CSV, PDF, SPSS, R, queXML dan MS Excel Format, Analisis statistik dan grafis dasar dengan fasilitas ekspor, Layar Pembaca Accessiblity, W3C, Mendukung lebih dari 50 bahasa, Panduan atau dokumentasi.

3. Cartnex (Demo | Download)
Cartnex yang memiliki website resminya di laman cartnex.org merupakan perangkat lunak yang bergerak di bidang toko online (eCommerce) dengan tujuan membantu Anda dalam menjual produk yang Anda miliki dan mempeluas pelanggan Anda. Beberapa fitur cartnex dari sisi pembuatan diantaranya: menggunakan platform Yii Framework, desain profesional, sangat interaktif dan sederhana. CMS ini masih tergolong baru karena di rilis awal April 2015 sehingga belum memiliki dokumentasi.

4. EasyiiCMS (Demo | Download)
EasyiiCMS merupakan perangkat lunak yang bergerak dibidang web portal berita. Perangkat lunak ini memiliki slogan "Easy cms for easy websites" dengan tujuan memudahkan Anda dalam menyampaikan informasi kepada masyarakat. Beberapa fitur dari EasyiiCMS diantaranya: Cepat (Fast engine), Mengubah informasi berita secara langsung (Live edit), mudah dan dibangun menggunakan platform Yii Framework 2.

Tuesday 11 November 2014

Login dan Manajemen User YII Framework Siap Pakai

Standard
http://creationgears.com
Berikut ini lima extension terbaik mengenai autentifikasi dan manajemen user di yii framework. Extension ini bisa anda gunakan cuma-cuma alias gratis dengan lisensi dan aturan yang tersedia.
1. YII User (Demo | Download)
Extension ini dibuat oleh mishamx pada 12 Februari 2010 mendapatkan like 262 voters, diunduh sebanyak 61.927 kali dan sudah 7 kali revisi. YII User memiliki fitur diantaranya: Login from User, Name or Email, Registration, Activation accounts (verification email, administrator or not), Recovery password (send recovery key to user email), User profile page, Manage Users, Manage Profile Fields, Profile field widget for view, edit and save data, Date widget (jQueryUI datepicker), File upload widget, Profile Relation Widget, API.

2. YII Rights (DemoDownload)
Chris83 merupakan pembuat dari yii rights ini, orang yang sudah tidak asing lagi dalam dunia pemrograman. Orang ini terkenal sebagai pembuat bootstrap. Extension ini mendapatkan like 229 voters, diunduh sebanyak 47,756 kali dan sudah mengalami 2 kali revisi. Untuk revisi selanjutnya chris mengubah nama extensionnya menjadi yii auth. Diterbitkan pada 22 Juli 2010. Memiliki fitur: User interface optimized for usability, Role, task and operation management, View displaying each role's assigned tasks and operations, Assigning authorization items to users, Sorting of authorization items by dragging and dropping, Installer for easy and quick set up, Authorization item generation, Controller filter for checking access, Support for business rules (and data), Runtime caching to increase performance, Internationalization (I18N), Cross-browser and cross-database compatibility, Easy to extend.

3. SRBAC (Demo | Download)
Extension yang dibuat oleh Spyros ini terbit pada 5 Juli 2009 mendapatkan 71 like, diunduh sebanyak 33,865 kali dan mengalami perbaikan sebanyak 3 kali. Extension SRBAC memiliki fitur diantaranya: You can select if demo data will be created in install, All assignments calls are made in ajax, You can set the name of the Authorizer authItem, You can update the names of the auth Items, Delete authItems, Ajax based web interface for administrating auth items at index.php?r=srbac/authItem/manage, View Roles / Tasks / Operations assigned to users at index.php?r=srbac/authItem/assignments, Srbac can be installed as a child module too, Custom cssFile support, Custom layout for srbac (layout must be in default application's layout folder), Add ajax indicators, Spanish translation (Ricardo Obregon), Russian translation (idle sign), Added autocomplete textbox for searching in users assignments.

4. Auth (Demo | Download)
Extension lanjutan dari yii Rights dengan pembuat yang sama yaitu Chris83 rilis pada 29 Desember 2012 mendapatkan 67 like dan diunduh sebanyak 7814 kali sudah mengalami revisi sebanyak 10 kali. Fitur utama yang terlihat dari extension ini adalah penggabungan rights dengan bootstrap terlihat sangat responsive pada tampilannya.

5. Usergroups (Demo | Download)
Extension ini dibuat oleh Nickcv pada 24 Maret 2012 mendapatkan 52 like dan telah diunduh sebanyak 12775 kali. Fitur diantaranya: groups: let's you decide what group the user has to belong to perform an action, levels: you can decide what level the user needs to perform an action, permissions: you can decide that just users with a certain permission on that controller or another can perform a certain action

Monday 10 November 2014

Membuat User Online di YII Framework

Standard
Pada posting ini akan saya paparkan bagaimana cara membuat user online pada yii framework. Fungsi dari user online adalah untuk mengetahui berapa user yang sedang aktif pada sistem informasi yang kita buat.
Berikut langkah membuat user online di yii framework:
1. Membuat user login
Anda bisa membuat user login sendiri atau menggunakan beberapa extension yang disediakan pada laman yii framework (rights, RBAC, yii user) atau bisa langsung klik LINK.
2. Extension DbHttpSession (UNDUH)
Silahkan mengunduh extension DbHttpSession kemudian ekstrak kedalam path: protected/components pada aplikasi anda.
3. Tambahkan code berikut ini pada component dalam file config/main.php

'session' => array (
  'class' => 'application.components.DbHttpSession',
  'connectionID' => 'db',
  'sessionTableName' => 'session',
  'userTableName' => 'user'
),
4. Tambahkan query berikut kedalam database anda. Query ini akan menambahkan field user_id, last_ip, last_activity pada tabel user anda. 

ALTER TABLE user ADD user_id INT(11) NOT NULL, ADD last_ip VARCHAR(100) NOT NULL, ADD last_activity DATETIME NOT NULL
5. Tambahkan method getOnlineUsers pada model user aplikasi protected/model/user.php

public static function getOnlineUsers()
    {
        $sql = "SELECT session.user_id, user.username FROM session LEFT JOIN user ON user.id=session.user_id";
        $command = Yii::app()->db->createCommand($sql);
 
        return $command->queryAll();
    }
6. Pada protected/view/site/index.php tambahkan kode berikut

foreach (User::getOnlineUsers() as $user) {
        echo $user["username"];
    }

Monday 14 July 2014

Set Value dari Pilihan Dialog Pada YII Framework

Standard
Pernahkan anda menjumpai permasalahan saat menginputkan data pada suatu text dengan ketentuan data itu harus benar berasal dari tabel tertentu? Kemudian dengan cara apa anda menyikapi permasalahan seperti ini? Menggunakan dropdownlist atau autocomplete? Benar, itu merupakan salah satu jalan keluar yang baik tetapi pernahkan anda berfikir apabila data dalam tabel tersebut ada ribuan? Tentu saja akan memusingkan apabila harus memilih data yang ribuan tersebut dalam suatu inputan dropdownlist.
Beberapa tutorial dalam wiki Yii Framework membuat panduan berupa select data dari kotak dialog yang didalamnya itu nanti muncul data dari tabel lain dan terdapat suatu inputan pencarian. Pada contoh berikut ini saya akan membuat tutorial dengan studi kasus aplikasi jurnal dengan data tabel master Dosen sebagai pelaku yang mengisikan data pada aplikasi jurnal tersebut. Berikut ini langkah pembuatannya:
Buatlah form yang terdiri dari textfield NIDN, Nama dan Program Studi seperti pada gambar berikut:

Kemudian buatlah tombol "ubah" untuk memunculkan data tabel dosen dalam dialog seperti pada gambar diatas.
Apabila data Dosen berasal dari tabel yang lain yaitu tabel dosen maka renderlah model tersebut. Contoh disini saya akan merender model dosen dalam action create sebagai berikut:
<?php public function actionCreate()
 {
  $model=new Jurnal;
  $model2=new Dosen('search');
  $model2->unsetAttributes();
  if(isset($_GET['Dosen']))
   $model2->attributes=$_GET['Dosen'];
  if(isset($_POST['Jurnal']))
  {
   $model->attributes=$_POST['Jurnal'];
   $model->save();
  }

  $this->render('create',array(
   'model'=>$model,
   'model2'=>$model2,
  ));
 }
?>
Kemudian pada file protected/view/jurnal/_form.php buatlah form dialog yang berasal dari model dosen sebagai berikut:
<?php 
    $this->beginWidget('zii.widgets.jui.CJuiDialog',array(
 //Nama selector/id
    'id'=>'mydialog',
    // additional javascript options for the dialog plugin
    'options'=>array(
        'title'=>'Klik tanda <code>+</code> untuk memilih NIDN!',
        'autoOpen'=>false,
  //Fokus atau modal diaktifkan
  'modal' => true,
     'show'=>array(
       'effect'=>'blind',
       'duration'=>1000,
       ),
     'hide'=>array(
       'effect'=>'explode',
       'duration'=>500,
     ),
  'width' => 640, 
  'height' => 480
    ),
));?>
<?php $this->widget('bootstrap.widgets.TbGridView',array(
 'id'=>'dosen-grid',
 'dataProvider'=>$model2->search(),
 'type'=>'striped bordered condensed',
 'filter'=>$model2,
 'columns'=>array(
  array(
   'name'=>'nidn',
   'filter'=> CHtml::activeTextField($model2, 'nidn', array('placeholder'=>'Cari NIDN dosen')),
  ),
  array(
   'name'=>'nama',
   'filter'=> CHtml::activeTextField($model2, 'nama', array('placeholder'=>'Cari nama dosen')),
  ),
  array(
          'name'=>'program_studi',
          'type'=>'raw',
    'filter'=>CHtml::listData(Dosen::model()->findAll(array(
    'distinct' => true,
    'order' => 'program_studi ASC'
   )), 'program_studi', 'program_studi'),
        ),
  array(
    'header'=>'PILIH',
    'type'=>'raw',
    'value'=>'CHtml::Button(
          "+"
          , array(
    "class" => "btn submit"
          , "id" => "get_link"
          , "onClick" => "$(\"#mydialog\").dialog(\"close\");$(\"#Jurnal_nidn \").val(\"". $data->nidn."\");
    $(\"#Dosen_nama \").val(\"". $data->nama."\");
    $(\"#Dosen_program_studi \").val(\"". $data->program_studi."\");
    "))',
  ),
 ),
)); ?>
<?php $this->endWidget('zii.widgets.jui.CJuiDialog'); ?>
Pada source code diatas merupakan code untuk membuat pilihan dialog data dari dosen kemudian apabila user sudah memilih salah satu data maka otomatis langsung mengset textfield NIDN, Nama dan Program Studi seperti pada gambar berikut ini:
Setelah button [+] di pilih maka akan menset textfield sebagai berikut ini:
Pada textfield NIDN terdapat button "ubah" source codenya sebagai berikut:
<?php echo $form->textFieldRow($model, 'nidn', array('disabled'=>true, 'class'=>'span2', 'hint' => '<i class="text-info" id="nidn">Klik <a href="#" onclick=$("#mydialog").dialog("open"); return false;><code>ubah</code></a> untuk memilih NIDN.</i>')); ?>
Pada textfield NIDN dipasang action onclick bernama #mydialog untuk menampilkan dialog tersebut.

Apabila muncul pesan error "Undefined variable: model2" maka definisikan model2 dalam file create.php di folder protected/view/jurnal/create.php

Pada contoh ini menggunakan struktur tabel sebagai berikut:

Live Demo

Pastikan anda menggunakan extension bootstrap atau booster.

Sunday 18 August 2013

7 LANGKAH BELAJAR YII FRAMEWORK

Standard
Bagi banyak orang yang baru saja mengenal YII Framework mungkin terasa sulit karena belum mengenal dan baru saja mengetahui sintak-sintak apa saja yang dapat di gunakan pada framework canggih ini. Sebenarnya yii framework itu apa dan bagaimana cara penggunaanya, seperti inilah pertanyaan yang selalu terlontarkan pada orang-orang yang akan memulai belajar yii.
Mari kita kupas bagaimana kiat belajar yii framework yang baik. Sebelum menginjak ke inti permasalahan mari kita ulas kembali pengertian dari yii framework.
Di kutip dari laman resmi yii framework adalah framework (kerangka kerja) PHP berbasis-komponen, berkinerja tinggi untuk pengembangan aplikasi Web berskala-besar. Yii menyediakan reusability maksimum dalam pemrograman Web dan mampu meningkatkan kecepatan pengembangan secara signifikan. Nama Yii (dieja sebagai /i:/) singkatan dari "Yes It Is!".
Kiat belajar yii framework di kutip dari forum yii framework Indonesia yaitu:
  1. Unduh Yii Framework --> install --> test requirementnya, untuk lebih lengkapnya baca pada docs http://www.yiiframework.com/doc/guide/1.1/en/quickstart.installation
  2. Tes demo yang di sediakan dalam yii framework dan yang terpenting adalah sample blog. Pelajari pola kode didalamnya dan  baca dokumentasinya pada alamat http://www.yiiframework.com/doc/blog/
  3. Saatnya membuat aplikasi Yii sendiri, buat skeleton Yii Framework dengan mengikuti tutorialnya pada alamat http://www.yiiframework.com/doc/guide/1.1/en/quickstart.first-app aplikasi ini sudah bisa digunakan, meskipun masih skeleton.
  4. Melalui MySQL atau database lainnya (PostGreSQL, Oracle, dll), anda dapat membuat database sesuai yang anda butuhkan. Setiap tabel wajib mempunyai Primary Key. Setelah itu setup koneksi database-nya ke Yii (app/protected/config/main.php. Ikuti petunjuk pada alamat http://www.yiiframework.com/doc/ guide/1.1/en/database.dao
  5. Saatnya membuat aplikasi CRUD dengan tabel-tabel di database yang sudah kita buat melalui Auto Generation Code Yii dengan mengikuti petunjuk pada alamat http://www.yiiframework.com/doc/guide/1.1/en/topics.gii
  6. Sisanya tinggal berjalan bersama Yii, pelajari semua class, componen, db, gii, loging, validation, Filter, Form, zii Widget, extension, module, behaviour, theme, layout, captha, authentication, internationalization, localization, webservices, unit testing, dan integrasi dengan third party, framework lain, encapsulate yang ada dalam yii. Semua sudah built-in di Yii, tinggal menggunakan saja.
  7. Pelajari Wiki dan gunakan Extension sesuai kebutuhan anda.
Semoga bermanfaat, selamat mencoba.

Saturday 17 August 2013

CMS MANAJEMEN SEKOLAH DASAR BERBASIS YII FRAMEWORK

Standard
ISIMS (Sistem Informasi Manajemen Sekolah Dasar) merupakan perangkat lunak untuk mengelola nilai siswa, absensi siswa, jurnal mengajar, kenaikan kelas dan monitoring pembelajaran. Perangkat lunak ini bersifat open source dan di bangun menggunakan YII Framework.

FEATURES
  • Manajemen Monitoring Pembelajaran
  • Pengaturan Website Dinamis
  • Manajemen Nilai dan Raport
  • Manajemen Jurnal Mengajar
  • Manajemen Kenaikan Kelas
  • Manajemen Absensi Siswa
  • Manajemen User
  • Kalkulator
REQUIREMENTS
  • Yii 1.13 or above
  • PHP 5.3 or above
  • PostGreSQL 8.1 or above
INSTALLATION
  • Download master yii framework (http://www.yiiframework.com/download/)
  • Ekstrak file master yii framework ke dalam webserver (Ex: localhost/yii/master/)
  • Ekstrak file isims dalam cd ke webserver (Ex: localhost/yii/isims/)
  • Buka File index pada main direktori isims
  • Ubah baris ke-4 menjadi $yii=dirname(__FILE__).'/../master/framework/yii.php';
  • Import database /isims/protected/data/isims-db.sql (PostGreSQL 8.1 or above)
  • Buka konfigurasi .../isims/protected/config/main.php
  • Ubah baris 111-121 sesuai kebutuhan
  • 'db'=>array( 'connectionString' => 'pgsql:host=localhost;port=5432;dbname=NAMA_DATABASE', 'emulatePrepare' => true, 'username' => 'USERNAME', 'password' => 'PASSWORD', 'charset' => 'utf8', 'enableProfiling'=>true, 'enableParamLogging' => true, 'schemaCachingDuration' => 180, ),
  • Buka Browser --> localhost/yii/isims/ atau www/yii/isims/
  • Website siap digunakan
USER MANAJEMEN
  • Admin (Username: ocim | Password: ocim)
TRY OUT DEMO
REPO
  • Github (Download) - Database No Include
DATABASE
Database Only (Apply via Google Form atau Telp. +6285742974933)
  • Harga : Rp 50.000,-
  • File Format : SQL (MySQL atau PostgreSQL)
  • Availability : Ready Stock
Full Packet (Apply via Google Form atau Telp. +6285742974933)
  • Harga : Rp 200.000,-
  • File Format : Aplikasi Full Version, Database, Ebook, Panduan Instalasi, Lisensi Jangka Panjang.
  • Availability : Ready Stock

Dapat melakukan pemesanan melalui Google Form dibawah

Sunday 11 August 2013

Membuat Link Download Pada CgridView YII Framework

Standard
Dalam yii framework apa saja dapat di buat karena framework yang satu ini sudah support website 2.0 atau yang sering di sebut website pintar seperti google, facebook, dll. Salah satu hal yang penting dan sering di tanyakan oleh orang yang baru belajar pemrograman web yaitu bagaimana cara membuat link download seperti ilustrasi berikut ini:


Posting ini akan membahas bagaimana membuat link download (Unduh) pada cgridview. Bagaimana cara membuatnya? Mari kita bahas.
Apabila kita generate tabel menggunakan GII biasanya kita dapat menjumpai cgridview pada app/protected/view/admin.php seperti contoh script berikut ini:

<?php widget('bootstrap.widgets.TbGridView',array(
 'dataProvider'=>$model->search(),
 'filter'=>$model,
 'columns'=>array(
  'id_dosen',  
  'nama',  
  'profil',  
  'file'
  array(
   'class'=>'bootstrap.widgets.TbButtonColumn',
  ),
 ),

)); ?>
Secara default isi cgridview apabila menggunakan extension bootstrap adalah seperti script di atas. Apabila kita ingin menambahkan link download  pada cgridview tersebut maka kita ubah script menjadi seperti berikut ini:

<?php widget('bootstrap.widgets.TbGridView',array( 
 'id'=>'nondosen-grid', 
 'dataProvider'=>$model->search(), 
 'filter'=>$model, 
 'columns'=>array(  
  'id_dosen',  
  'nama',  
  'profil',  
  array(      
   'class'=>'CLinkColumn',      
   'header'=>'File',      
   'urlExpression'=>'Yii::app()->request->baseUrl."/files/".$data->file',      
   'label'=>'Unduh',  
  ),  
  array(   
  'class'=>'bootstrap.widgets.TbButtonColumn',  
  ), 
 ),
)); ?>
Perhatikan bagian script yang di cetak tebal. Apabila kita ingin menambahkan link download yaitu harus menambahkan 'urlExpression' dengan tujuan file yaitu letak direktori file paling luar (Yii::app()->request->baseUrl) di tambah nama file tersebut ($data->file) kemudian nama link tersebut kita pasang tulisan unduh seperti gambar berikut ini:
Cukup mudah bukan. Selamat Mencoba

Monday 5 August 2013

Page Caching Pada YII Framework

Standard
Sumber Gambar: http://microsoft.com
Dalam laman resmi yii di http://yiiframework.com memberikan review tentang page caching. Sebenarnya apa itu page caching dan apakah fungsinya? Berikut gambaran tentang page caching atau penembolokan halaman.
Penembolokan halaman merujuk pada caching isi seluruh halaman. Penembolokan halaman bisa terjadi di berbagai tempat. Misalnya, dengan memilih tajuk halaman(page header) yang sesuai, penjelajah klien(client browser) mungkin menembolok halaman yang sedang dilihat untuk jangka waktu tertentu. Aplikasi Web sendiri juga dapat menyimpan isi halaman dalam cache. Dalam subbab ini, fokus kita pada pendekatan ini.
Penembolokan halaman bisa dipertimbangkan sebagai kasus khusus caching fragmen. Karena isi halaman sering dihasilkan dari dari penerapan tata letak(layout) pada sebuah tampilan, caching halaman tidak akan berfungsi jika kita hanya memanggil beginCache() dan endCache() dalam tata letak. Alasannya dikarenakan tata letak diterapkan dalam metode CController::render() SETELAH tampilan konten dievaluasi.
Untuk menembolok seluruh halaman, kita harus melewatkan eksekusi aksi penghasil isi halaman. Kita bisa menggunakan COutputCache sebagai aksi filter untuk menyelesaikan tugas ini. Kode berikut akan memperlihatkan bagaimana kita mengkonfigurasi filter cache:

public function filters(){
    return array(
        array(
            'COutputCache',
            'duration'=>100,
            'varyByParam'=>array('id'),
        ),
    );
}
Konfigurasi filter di atas akan menjadikan filter diterapkan ke semua aksi dalam controller. Kita dapat membatasinya ke satu atau beberapa aksi hanya dengan menggunakan operator plus. Lebih jelasnya bisa ditemukan dalam filter.
Tip: Kita dapat menggunakan COutputCache sebagai filter karena kelas tersebut diturunkan dari CFilterWidget, yang artinya COutputCache dapat berupa widget dan juga filter. Sebenarnya, cara kerja widget mirip dengan filter: widget (filter) dimulai sebelum isi yang dilampirkan (aksi) dievaluasi, dan widget (filter) berakhir setelah isi yang dilampirkan (aksi) dievaluasi.
Kesimpulan:
Yii punya beberapa level cache, dari db cache, fragment cache sampe full cache.
Jika anda punya halaman index (actionIndex) di controller tertentu yang contentnya dinamis (diambil dari database) tapi tidak sering2 diupdate, gunakan full page cache di controller-nya (Peter Jack Kambey, 2013)

Sunday 2 June 2013

YII FRAMEWORK 15 WEBSITE INDONESIA BERBASIS YII

Standard
Mungkin banyak orang awam beranggapan penggunaan Yii Framework masih sulit di gunakan karena documentnya belum lengkap dan masih terbatas. Dari situlah banyak orang awam pesimis bagaimana cara membuat website yii yang berkualitas. Disini saya akan memberikan contoh beberapa website yii framework buatan anak bangsa yang sudah berkualitas.

1. Website Dikti (DEMO)
Website milik pemerintah di bidang beasiswa pendidikan untuk jenjang sekolah menenganh menuju bangku kuliah ini sudah berbasis yii Framework.

Friday 31 May 2013

YII FRAMEWORK URL REWRITER GOOD SEO!

Standard
Banyak orang awam jarang memikirkan fungsi dari url rewriter sebagai SEO website mereka. Ketika orang sudah membuat website di YII Framework maka yang mereka pikirkan adalah dimana dan bagaimana cara mempublish website tersebut agar di kenal orang bahkan dapat menghasilkan rupiah. Pemikiran ini wajar apabila di pikirkan oleh setiap orang sebab hal utama yang di cari adalah memang itu tanpa memikirkan kualitas SEO website yang mereka buat. Disini saya akan memaparkan bagaiman membuat URL rewriter yang GOOD SEO untuk website YII Framework. Kelebihan URL SEO ini di bandingkan dengan tutorial yang beredar di dunia maya adalah dapat membaca url dari primary key integer maupun string, Berikut langkah kerjanya:

Friday 24 May 2013

YII Mencegah Input Redudance Data (Data Ganda/ Double)

Standard

Pernahkan anda menjumpai error duplicate key value violates unique pada yii seperti gambar diatas? Pesan error diatas menjelaskan bahwa dalam database sudah terdapat data dengan yang anda inputkan sekarang. Dengan syarat pesan ini muncul ketika field database merupakan primary key atau unique sehingga ketika data ke-2 yang di inputkan sama maka akan tampil pesan error tersebut. Saya contohkan apabila dalam database terdapat data nomor 123A pada field no_pendaftaran kemudian anda menginputkannya lagi dengan nomor yang sama yaitu 123A maka akan tampil pesan error tersebut. Berikut ini akan saya paparkan 3 buah cara untuk mencegah terjadinya data ganda/ double :
1. Penggunaan try-catch
Contoh codenya seperti berikut:
Dalam lingkup try bernilai benar sedangkan dalam catch adalah value error yang akan di tampilkan.
Script ini hanya menampung error dalam sebuah tampilan gui message flash saja. Cara ini kurang cantik bila di gunakan untuk validasi sebuah kriteria. Cara yang ke-2 ini adalah rekomendasi dari Muhammad Rifki Mockie agar validasi lebih baik dan lebih cantik sesuai prosedur dari doc yii framework. Berikut ini tips ke-2:
2. Penggunaan validasi dari Rule di Model
Step-1
Buatlah file proctected/components/CompositeUniqueKeyValidator.php
Kemudian isikan script seperti berikut ini:
<?php
/**
 * CompositeUniqueKeyValidator class file.
 */
class CompositeUniqueKeyValidator extends CValidator {
    /**
     * @var string comma separated columns that are unique key
     */
    public $keyColumns;
 
    public $errorMessage = '"{columns_labels}" are not unique';
 
    /**
     * @var boolean whether the error message should be added to all of the columns
     */
    public $addErrorToAllColumns = false;
 
    /**
     * @param CModel $object the object being validated
     * @param string $attribute if there is an validation error then error message
     * will be added to this property
     */
    protected function validateAttribute($object, $attribute) {
        $class = get_class($object);
        Yii::import($class);
        $keyColumns = explode(',', $this->keyColumns);
        if (count($keyColumns) == 1) {
            throw new CException('CUniqueValidator should be used instead');
        }
        $columnsLabels = $object->attributeLabels();
 
        $criteria = new CDbCriteria();
        $keyColumnsLabels = array();
        foreach ($keyColumns as &$column) {
            $column = trim($column);
            $criteria->compare($column, $object->$column);
            $keyColumnsLabels[] = $columnsLabels[$column];
        }
        unset($column);
        $criteria->limit = 1;
 
        if ($class::model()->count($criteria)) {
            $message = Yii::t('yii', $this->errorMessage, array(
                '{columns_labels}' => join(', ', $keyColumnsLabels)
            ));
            if ($this->addErrorToAllColumns) {
                foreach ($keyColumns as $column) {
                    $this->addError($object, $column, $message);
                }
            }
            else {
                $this->addError($object, $attribute, $message);
            }
        }
    }
}
?>
Step-2
Tambahkan validasi pada method rule di model anda:
<?php
public function rules(){
   return array(
   array('no_karyawan', 'CompositeUniqueKeyValidator', 'keyColumns' => 'no_karyawan, id_tempat'));
} ?>
Maksud dari rule ini adalah memvalidasi field no_karyawan dan id_tempat yang keduanya merupakan primary key agar menjadi field unique key.

3. Pengecekan database
Step 1 - Membuat coditional field apa yang ingin dicek, contohnya seperti kode program berikut:
$isExist = Mhs::model()->exists(
 array('condition'=>'nim = :nim',
 'params'=>array(
  ':nim'=>$_POST['NilaiKknPpl']['nim']
 ),
));
Kemudian buat kondisi untuk membaca kode program diatas. Yaitu seperti kode berikut ini:
if($isExist){
 //True atau ada dalam database
}else{
 //False atau tidak ada dalam database
}
Untuk saya pribadi lebih menganjurkan anda untuk memakai cara ke-3 karena langsung melakukan pengecekan pada database, apakah data sudah ada atau tidak. Cara pertama yaitu try... catch tidak cocok untuk pengecekan redudance data. Berbeda dengan cara kedua yang masih error dalam proses updatenya karena validasinya masih membaca primary key sebagai data yang sudah ada dalam database sehingga proses updatenya gagal walaupun proses createnya sudah oke dalam masalah validasi.

Copyright © AIMAGU. Jasa Pembuatan Website. All Rights Reserved
Design by Automattic | Blogger Theme by NewBloggerThemes | Official: www.aimagu.com