asas cakephp-mvc

44
Versi CakePHP 2.* dan ke atas. Tarikh modul dicipta 12/12/2014 Versi modul 1.0 Email [email protected] Hakcipta Terpelihara.Fariz Izwan Bin Kamaruzzaman.2014. ASAS CAKEPHP MVC: MEMBINA APLIKASI WEB (CRUD) CAKEPHP 2.0. Fariz Izwan Kamaruzzaman

Upload: kriptonium

Post on 22-Feb-2017

173 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Asas cakephp-mvc

       

Versi CakePHP

2.* dan ke atas.

Tarikh modul dicipta

12/12/2014

Versi modul 1.0 Email [email protected]

H a k c i p t a   T e r p e l i h a r a . F a r i z   I z w a n   B i n   K a m a r u z z a m a n . 2 0 1 4 .  

ASAS  CAKEPHP  MVC:  MEMBINA  APLIKASI  WEB  (CRUD)  CAKEPHP  2.0.  Fariz  Izwan  Kamaruzzaman      

08  Fall  

Page 2: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

2  

Prakata Assalamualaikum W.B.T dan Selamat Sejahtera pada pembaca modul panduan ini. Saya amat bersyukur kerana dapat menyiapkan modul Asas CakePHP MVC:Membina Aplikasi Web(CRUD) CakePHP 2 ini untuk latihan CakePHP yang saya kendalikan . Dengan sebegitu banyak PHP Framework yang telah ada pada masa sekarang seperti Zend,Laravel,Symfony dll,CakePHP juga tidak ketinggalan kehebatan dan kelebihannya untuk bersaing bersama-sama PHP Framework yang lain. Setiap Framework pasti ada kelebihan & kekurangan masing-masing.Apa yang penting adalah keperluan terhadap sesuatu permintaan itu dapat ditunaikan mengikut spesifikasi dan had masa yang ditetapkan atau dengan erti kata lain,sesuatu framework itu dapat menyelesaikan kerja mengikut keperluan & had masa yang ditetapkan. Saya berharap dengan modul panduan ini ,anda dapat memahami asas PHP MVC Framework & CakePHP . Jom buat Cake!

             

Page 3: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

3  

Objektif & Keperluan  Objektif modul panduan ini adalah untuk memberi panduan kepada para pembangun PHP yang baru bermula menggunakan CakePHP Framework untuk mebina sebuah aplikasi web yang mempunyai fungsi Bina(Create),Baca(Read) Kemaskini(Update),Padam(Delete) atau dengan perkataan pendek CRUD. Modul panduan ini merangkumi:

1. Pengenalan ringkas CakePHP Framework. 1.1. Model 1.2. Controller 1.3. View.

2. Pemasangan CakePHP pada stesen kerja local (Local Workstation/Localhost). 2.1. Pemasangan di Windows 2.2. Pemasangan di Linux/*nix. 2.3. Pemasangan di OSX.

3. Pemasangan CakePHP Console & Shell. 3.1. Windows 3.2. Linux/*nix. 3.3. OSX.

4. Membina sebuah aplikasi CakePHP - Project Management System. 5. Menjana struktur aplikasi menggunakan Cake Bake Console.

5.1. CakePHP Skema & Model 5.2. Cara untuk membina skema pangkalan data menggunakan Cake Schema Console. 5.3. Penyambungan pangkalan data menggunakan Cake Bake Console (MYSQL & CakePHP

Connection). 6. Menjana kod sumber (Source Code) menggunakan Cake Bake Console.

6.1. Penerangan Interactive Bake Shell. 6.2. Menjana kod sumber untuk Model,View & Controller. 6.3. Route

7. Membina fungsi log masuk dan log keluar (Login & Logout with Simple Authentication and Authorization Application) 7.1. Membuat Tetapan dan Kemaskini 7.2. Pengesahan Log Masuk & Log Keluar (Login & Logout Authentication) 7.3. Penggunaan fungsi beforeFilter. 7.4. Password Hashing. 7.5. Penapisan akses kandungan mengikut kategori pengguna sistem (Authorization).

Page 4: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

4  

Keperluan Untuk mengikuti panduan ini. Anda perlu mempunyai asas dan pengalaman dalam pembangunan web seperti :

- Tahu membina modul Create Read Update Delete (CRUD) menggunakan PHP dan MySQL

- Tahu mereka bentuk struktur dan skema pengkalan data (Databases) menggunakan SQL (Modul ini menggunakan MYSQL).

- Mempunyai asas HTML,CSS,dan Javascript. - Tahu menggunakan alat pengurusan pengkalan data(Database Administration Tools)

seperti PhpMyAdmin,Sequel Pro,dll. - Sudah mempunyai HTTP server seperti Apache (Modul ini akan menggunakan Apache ). - Sudah mempunyai SQL server seperti MYSQL (Modul ini menggunakan MYSQL). - Mengetahui asas OOP (Object Oriented Programming).

Page 5: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

5  

1.Pengenalan ringkas CakePHP Framework.

1.1 Model. Fungsi model secara ringkas adalah komponen yang akan berinteraksi dengan pangkalan data. Model ditugaskan untuk menerima,menghantar,dan memanipulasi bisnes data logik diantara pangkalan data dan controller. Sebagai contoh,setiap SQL query yang dijalankan haruslah diletakkan didalam model supaya informasi data dapat dikapsulkan dan disembunyikan(Data encapsulation & information hiding). 1.2 Controller. Fungsi controller secara ringkas adalah komponen untuk mengawal permintaan dan perjalanan sesuatu aplikasi. Controller ditugaskan untuk mengawal atau menjadi “orang tengah” antara view dan model.Sebagai contoh,apabila anda membuka url facebook.com,komponen controller akan memproses dan menghantar permintaan anda,dan paparan Home Page facebook.com akan muncul. 1.3 View. Fungsi view secara ringkas adalah komponen untuk memaparkan data dan paparan antaramuka grafikal (GUI). View ditugaskan untuk memaparkan paparan data atau paparan antaramuka grafikal yang dihantar melalui controller yang kemudiannya membolehkan pengguna berinteraksi dengan aplikasi.Sebagai contoh, anda mengisi borang daftar di facebook.com,borang itu adalah elemen HTML yang dipaparkan dari komponen view.

Page 6: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

6  

2. Pemasangan CakePHP pada stesen kerja lokal ( Local Workstation/Localhost). Untuk memulakan pembelajaran anda perlu memuat turun CakePHP Framework versi 2.0 dan ke atas jika anda belum lagi mempunyai CakePHP framework di .Muat turun CakePHP Framework di https://github.com/cakephp/cakephp/tags. Modul panduan ini akan menggunakan CakePHP 2.5.7 . Gambar rajah di bawah menunjukkan struktur direktori CakePHP yang dimuat turun tadi.

2.1 Pemasangan di Windows. Jika anda menggunakan XAMPP sila ikut langkah di bawah: Pergi ke fail zip cakephp yang anda muat turun tadi. Ekstrak dan copy direktori cakephp ke direktori htdocs . Contoh: C:\xampp\htdocs\cakephpß Direktori Cake anda atau C:\xampp\htdocs\cakephp-2.5.7 ß Direktori Cake anda Jika anda menggunakan WAMP sila ikut langkah di bawah: Pergi ke fail zip cakephp yang anda muat turun tadi. Ekstrak dan copy direktori cakephp ke direktori www .

Direktori Penerangan app Fail aplikasi anda lib Kod sumber atau enjin CakePHP tersimpan

disini. plugins Untuk menyimpan CakePHP plugins vendors Untuk menyimpan third-party PHP Libraries

Page 7: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

7  

Contoh: C:\wamp\www\cakephpß Direktori Cake anda atau C:\wamp\www\cakephp-2.5.7 ß Direktori Cake anda Jika anda menggunakan pakej server selain dari yang diatas,anda cuma perlu mencari document root directory server anda dan copy & paste direktori cakephp tadi. 2.2 Pemasangan di Linux. Pergi ke fail zip cakephp yang anda muat turun tadi. Ekstrak dan copy direktori cakephp ke direktori Document Root . Contoh: RHEL/Fedora/Centos: /var/www/html/cakephpß Direktori Cake anda Debian/Ubuntu : /var/www/cakephp ß Direktori Cake anda 2.3 Pemasangan di OSX. Jika anda pengguna XAMPP sila ikut langkah di bawah: Pergi ke fail zip cakephp yang anda muat turun tadi. Ekstrak dan copy direktori cakephp ke direktori htdocs. Contoh: /Applications/XAMPP/htdocs/cakephp ß Direktori Cake anda Jika anda menggunakan pakej server selain dari yang diatas,anda cuma perlu mencari document root directory server anda dan copy & paste direktori cakephp tadi.

Page 8: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

8  

3. Pemasangan CakePHP Console & Shell Kelebihan CakePHP Framework bukan sahaja untuk digunakan sebagai web framework tetapi ia juga boleh digunakan untuk membina Console Application.Kelebihan konsol ini adalah seperti mengendalikan pelbagai tugasan seperti penyelenggaraan, dan menjana kod sumber untuk HTTP request & response cycle. Shell-shell yang terdapat di dalam aplikasi konsol ini antaranya adalah bake,acl,api,i18n,schema,dan banyak lagi.Anda juga boleh membina shell anda sendiri kelak. Peringatan! Untuk menggunakan CakePHP Console & Command , anda perlu memasang PHP CLI terlebih dahulu. Rujuk: http://www.php-cli.com/ Cara memasang Cake Console CLI . 3.1 Windows 1.Pergi ke Start à Control Panel à System and Security à Advanced system settings à Advanced à Enviroment Variables à cari PATH dan klik Edit. 2. Anda perlu menambah path ke direktori CakePHP yang anda muat turun tadi ke Variable Value. Contoh path yang akan ditambah: C:\xampp\htdocs\cakephp-2.5.7\lib\Cake\Console. Contoh gambar:

Page 9: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

9  

3.2 Linux 1.Buka terminal dan jalankan arahan(command) ini: ~$ vi ~/.bashrc 2. Tambahkan kod ini : export PATH="$PATH:/var/www/html/cakephp/lib/Cake/Console" atau export PATH="$PATH:/var/www/cakephp/lib/Cake/Console" Contoh gambar:

Page 10: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

10  

3.3 OSX 1.Buka terminal dan jalankan arahan(command) ini: ~$ vi ~/.bashrc atau ~$ vi ~/.bash_profile 2. Tambahkan kod ini : export PATH="$PATH:/var/www/html/cakephp/lib/Cake/Console" atau export PATH="$PATH:/var/www/cakephp/lib/Cake/Console" Contoh gambar:

Page 11: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

11  

Untuk mengetahui samada cake console berjaya dipasang pada variable path,jalankan command berikut: cake

Contoh paparan Cake console .

Page 12: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

12  

4. Membina sebuah aplikasi CakePHP – Sistem Pengurusan Projek. Kita akan membina sebuah aplikasi web iaitu Sistem Pengurusan Projek atau Project Management System. Ciri-ciri dan fungsi yang ada pada sistem adalah:

I. Menambah,kemaskini, dan menghapus Projek. II. Membuat perhubungan antara ahli(Users) untuk setiap satu projek. III. Seorang ahli akan mempunyai banyak projek. IV. Satu projek akan mempunyai banyak ahli yang menyertai. V. Fungsi Log keluar & Log masuk (Login & Logout Function)

Untuk modul panduan ini,kita akan menggunakan kelebihan CakePHP Console & Shell untuk mencipta prototaip aplikasi CakePHP ini dengan lebih pantas dan berkualiti.

Page 13: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

13  

5. Menjana struktur aplikasi menggunakan Cake Bake Console. CakePHP Bake Console adalah satu lagi usaha untuk mencipta aplikasi CakePHP dengan pantas.Bake dapat membina satu aplikasi yang boleh terus berfungsi dalam masa beberapa minit sahaja. Bake console akan mencipta fail untuk model,view dan controller beserta kod sumber fungsi asas seperti index,view,add,edit,dan delete di dalam controller. Untuk menjana atau mencipta struktur aplikasi Cake menggunakan Bake Console,sila taip arahan di bawah di terminal/cmd anda. cake bake Paparan seperti dibawah akan muncul * *Sila pastikan anda berada di dalam document root server yang betul. Contoh: Jika anda menggunakan Linux,anda perlu berada di /var/www/html/ atau /var/www/. Jika anda menggunakan XAMPP di OSX,anda perlu berada di /Applications/XAMPP/htdocs/. Jika anda menggunakan XAMPP di windows,anda perlu berada di C:\xampp\htdocs. Ikut arahan di bawah ini untuk langkah seterusnya. S = Soalan J = Jawapan S:  What is the path to the project you want to bake?

Page 14: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

14  

J: Jika anda menggunakan Linux/OSX,sila letakkan nama aplikasi yang anda mahu. Untuk modul panduan ini saya menggunakan nama pms untuk aplikasi pengurusan projek ini. S: J: Taip “y” untuk yes. Tukar lokasi direktori anda sekarang dan masuk ke direktori aplikasi yang baru kita cipta tadi iaitu direktori pms cd pms lihat senarai direktori dan fail dengan menggunakan arahan ini. Linux/OSX ls –la Windows dir Hasilnya adalah seperti di bawah ini:

Page 15: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

15  

Penerangan struktur direktori dan fail.

Nota peringatan ! Jika anda sudah mempunyai direktori aplikasi, anda harus menggunakan Cake Console & Command didalam direktori aplikasi anda.Sebagai contoh,jika direktori aplikasi anda bernama “pms”,anda perlu menjalankan arahan cake bake didalam direktori “pms” bukan di luar dari direktori “pms”.

Direktori Penerangan Config Menyimpan (beberapa) fail konfigurasi CakePHP , maklumat sambungan

pangkalan data,dan beberapa fail yang penting.

Console Mengandungi arahan dan tugas untuk Cake Console & Shell.

Controller Mengandungi fail controller untuk aplikasi anda

Index.php Fail untuk bootstrapping aplikasi anda.

Lib Mengandungi libraries yang bukan dari 3rd parties vendor.

Locale Menyimpan baris bahasa untuk tujuan pelbagai bahasa dalam satu aplikasi .

Model Mengandungi fail model untuk aplikasi anda

Plugin Pakej plugin disimpan disini.

Test Menyimpan fail test case dan test fixtures untuk tujuan unit test ke atas

aplikasi anda

tmp Disini CakePHP menyimpan data sementara(temporary data) seperti error

log,cookies,session,dll.

Vendor 3rd parties class atau libraries disimpan disini

View Mengandungi fail view untuk aplikasi anda

webroot Menyimpan fail CSS,Javascript,Image,dll.

.htaccess Untuk melakukan apache url rewriting.

Page 16: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

16  

5.1 CakePHP Skema & Model. Kelebihan model didalam cakephp adalah ia kemampuan model membuat perhubungan dan pemetaan objek atau Object Relational Mapping(ORM). Untuk melakukan perhubungan ini,kita perlu menggunakan penyatuan model (Association). Jenis Perhubungan (Relationship Type)

Perhubungan (Relationship)

Jenis Penyatuan (Association Type)

Contoh

one to one

hasOne

Satu pengguna sistem mempunyai satu projek.

one to many

hasMany

Satu projek mempunyai banyak ahli.

many to one

belongsTo

10 projek mempunyai satu ahli.

many to many

hasAndBelongsToMany(HABTM)

10 projek mempunyai 10 ahli dan sebaliknya.

Untuk aplikasi pengurusan projek ini kita akan menggunakan perhubungan belongsTo,dan hasMany.Perhubungan model ini adalah seperti berikut: Projects hasMany Project Applicants Users hasMany ProjectApplicants Project Applicants belongsTo Projects Project Applicants belongsTo Users Table yang perlu ada :- projects : untuk menyimpan data projek. users : untuk menyimpan data pengguna/ahli. project_applicants : untuk menyimpan data ahli yang menyertai projek.

Page 17: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

17  

Rujuk gambarajah dibawah untuk memahami ERD pangkalan data aplikasi ini.

Entity Relationship Diagram(ERD) untuk aplikasi Pengurusan Projek.

Page 18: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

18  

Untuk membina table pangkalan data tadi. Sila copy skrip arahan MySQL di bawah & paste ke MySQL DBA Tool yang anda gunakan contohnya phpmyadmin: CREATE TABLE `projects` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `name` varchar(255) NOT NULL DEFAULT '', `details` varchar(255) NOT NULL DEFAULT '', `start_date` datetime NOT NULL, `end_date` datetime NOT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; CREATE TABLE `project_applicants` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `project_id` int(11) NOT NULL, `user_id` int(11) NOT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, `created_by` int(11) DEFAULT NULL, `modified_by` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `users` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `username` varchar(255) NOT NULL DEFAULT '', `role` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `created` datetime DEFAULT NULL, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; Anda juga boleh mencipta skema data dengan menggunakan php skrip. Caranya adalah dengan mencipta satu fail schema.php didalam direktori Config/Schema.

Page 19: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

19  

 

Skrip fail Config/Schema/schema.php. <?php class AppSchema extends CakeSchema { public function before($event = array()) { return true; } public function after($event = array()) { } public $project_applicants = array(

'id' => array('type' => 'integer', 'null' => false, 'default' => null, 'unsigned' => true, 'key' => 'primary'), 'project_id' => array('type' => 'integer', 'null' => false, 'default' => null, 'unsigned' => false), 'user_id' => array('type' => 'integer', 'null' => false, 'default' => null, 'unsigned' => false), 'created' => array('type' => 'datetime', 'null' => true, 'default' => null), 'modified' => array('type' => 'datetime', 'null' => true, 'default' => null), 'user_id' => array('type' => 'integer', 'null' => false, 'default' => null, 'unsigned' => false),

'indexes' => array( 'PRIMARY' => array('column' => 'id', 'unique' => 1) ), 'tableParameters' => array('charset' => 'latin1', 'collate' => ' latin1_swedish_ci', 'engine' => 'InnoDB') ); public $projects = array(

'id' => array('type' => 'integer', 'null' => false, 'default' => null, 'unsigned' => true, 'key' => 'primary'), 'name' => array('type' => 'string', 'null' => false, 'collate' => 'latin1_swedish_ci', 'charset' => 'latin1'), 'details' => array('type' => 'string', 'null' => false, 'collate' => 'latin1_swedish_ci', 'charset' => 'latin1'), 'start_date' => array('type' => 'datetime', 'null' => false, 'default' => null), 'end_date' => array('type' => 'datetime', 'null' => false, 'default' => null), 'created' => array('type' => 'datetime', 'null' => true, 'default' => null), 'modified' => array('type' => 'datetime', 'null' => true, 'default' => null), 'user_id' => array('type' => 'integer', 'null' => false, 'default' => null, 'unsigned' => false),

Page 20: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

20  

 

'indexes' => array( 'PRIMARY' => array('column' => 'id', 'unique' => 1) ),

'tableParameters' => array('charset' => 'latin1', 'collate' => 'latin1_swedish_ci', 'engine' => 'InnoDB')

); public $users = array(

'id' => array('type' => 'integer', 'null' => false, 'default' => null, 'unsigned' => true, 'key' => 'primary'), 'name' => array('type' => 'string', 'null' => false, 'collate' => 'latin1_swedish_ci', 'charset' => 'latin1'), 'username' => array('type' => 'string', 'null' => false, 'collate' => 'latin1_swedish_ci', 'charset' => 'latin1'), 'password' => array('type' => 'string', 'null' => false, 'collate' => 'latin1_swedish_ci', 'charset' => 'latin1'), 'created' => array('type' => 'datetime', 'null' => true, 'default' => null), 'modified' => array('type' => 'datetime', 'null' => true, 'default' => null),

'indexes' => array( 'PRIMARY' => array('column' => 'id', 'unique' => 1) ),

'tableParameters' => array('charset' => 'latin1', 'collate' => 'latin1_swedish_ci', 'engine' => 'InnoDB')

); }

Page 21: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

21  

5.2 Cara untuk membina skema pangkalan data menggunakan Cake Schema Console. Schema shell berfungsi untuk membina skema objek dan juga skema MySQL dump. Schema shell juga boleh digunakan untuk mengemaskini atau mengubah skema pangkalan data.Rujuk http://book.cakephp.org/2.0/en/console-and-shells/schema-management-and-migrations.html Untuk mengetahui arahan-arahan yang ada didalam Schema Console,gunakan arahan ini cake schema Paparan seperti dibawah akan muncul Sebentar tadi anda telah mencipta fail schema.php, oleh itu gunakan arahan dibawah ini untuk membina skema objek di pangkalan data MySQL . cake schema create Hasil daripada arahan di atas adalah,ia akan mencipta table di pangkalan data MySQL.

Page 22: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

22  

Jadual dibawah menerangkan kegunaan arahan Schema Console. Arahan Fungsi

view Memaparkan kandungan fail skema. generate Menjana skema berdasarkan model yang dicipta . Untuk memproses kesemua

data yang ada didalam table sql gunakan parameter –f . dump Menjana/mencipta SQL dump fail. contoh : schema.sql. create Memadam dan menjana semula skema berdasarkan fail skema yang dicipta. update Mengubah table data berdasarkan fail skema yang dicipta. Contoh pangkalan data MySQL yang telah dicipta dan dibuka menggunakan perisian Sequel Pro.

Page 23: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

23  

5.3 Penyambungan pangkalan data MySQL menggunakan Cake Bake Console (MYSQL & CakePHP Connection).

Untuk membuat penyambungan antara MySQL dan CakePHP dengan mudah,anda boleh menggunakan arahan cake bake.

Pastikan anda berada didalam direktori aplikasi anda iaitu direktori pms & jalankan arahan cake bake sekali lagi.

S = Soalan J = Jawapan

S:

J: Tekan “enter” .Kita akan gunakan tetapan default . S: J: Tekan “enter”. Kita akan gunakan MySQL untuk datasource/database. S:  Persistent Connection? J: Taip “y” jika hendak mengaktifkan,Tekan “enter” jika tidak. S: Database Host J: Tekan “enter” jika localhost,isikan host anda jika ia berlainan dari localhost. S:Port? J: Taipkan nombor MySQL jika anda menggunakan port untuk melakukan penyambungan MySQL,Tekan “enter” jika tidak. S: User J: Taipkan nama pengguna(username) MySQL anda,jika ia adalah “root” tekan “enter”. S: Password J: Taipkan kata laluan(password) MySQL anda,jika tiada tekan “enter” dan taip “y” untuk soalan seterusnya. S: Database Name J: Taipkan nama pangkalan data yang kita cipta tadi iaitu “pms” S: Table Prefix?

Page 24: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

24  

J: Taipkan nama table prefix jika anda mahu. S: Table encoding J: Taipkan nama table encoding jika anda mahu ubah. S:

J: Taip “y” jika anda berpuashati,taip “n” jika anda ingin mengulangi proses semula. S:  Do you wish to add another database configuration? J: Taip “y” jika anda mahu menambah penyambungan pangkalan data,tekan “enter” jika tidak. Untuk mengetahui sama ada penyambungan tadi berjaya atau tidak,buka browser dengan url ini, http://localhost/pms

Page 25: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

25  

Jika anda mendapat mesej seperti ini, Bermakna anda mempunyai masalah dengan penyambungan yang dibuat sebentar tadi. Anda boleh melakukan pengubahan tetapan dengan membuka fail database.php di dalam direktori Config/Schema/database.php Rujuk gambar jika kurang faham.

Anda perlu menambah variable ‘unix_socket’ ke dalam $default = array() dan tetapkan nilainya . Contoh: public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'localhost', 'login' => 'root', 'password' => 'admin321', 'database' => 'pms', 'unix_socket' => '/var/mysql.sock', //unix socket );

Page 26: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

26  

6 .Menjana kod sumber (Source Code) menggunakan Cake Bake Console. 6.1 Penerangan Interactive Bake Shell.

Arahan Fungsi cake bake db_config Membuat tetapan untuk konfigurasi pangkalan data cake bake model Menjana kod sumber untuk model yang akan mengandungi

validation & association. cake bake view Menjana kod sumber HTML untuk paparan pengguna. cake bake controller Menjana kod sumber untuk model yang akan mengandungi

fungsi seperti index,view,add,edit, dan delete. cake bake project Untuk membina struktur aplikasi CakePHP yang baru. cake bake fixture Untuk menjana kod sumber untuk test fixture. cake bake test Untuk menjana kod sumber untuk CakePHP unit test. cake bake plugin plugin_name Menjana kod sumber untuk plugin mengikut struktur direktori

CakePHP cake bake all Menjana kod sumber untuk model,view,controller,test,

sekaligus.

Page 27: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

27  

6.2 Menjana kod sumber untuk Model,View & Controller. Pastikan anda berada di dalam direktori aplikasi anda iaitu “pms”. Sekarang taipkan arahan di bawah. cake bake all Paparan seperti dibawah ini akan keluar Sekarang apa yang perlu anda lakukan adalah,masukkan nombor mengikut urutan.Kita akan bake ProjectApplicant dahulu. Jadi masukkan nombor 1 pada terminal/cmd. Anda akan mendapat paparan seperti ini apabila ia console bake berjaya menjana kod sumber untuk Model,View & Controller.Rujuk gambar.

Page 28: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

28  

SFail view yang telah dicipta

Proses bake selesai untuk ProjectApplicant. Seterusnya, untuk bake model Project & User, anda cuma perlu mengulangi langkah di atas. Untuk mengetahui sama ada cake menjana & mencipta kod sumber tadi,kita buka folder Model,View & Controller

SFail model yang telah dicipta

SFail controller yang telah dicipta  

Page 29: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

29  

Kita akan cuba menambah user ke dalam sistem kita dengan membuka url http://localhost/pms/users/add.

Paparan seperti dibawah ini akan muncul.

Sila cuba tambah user dan submit.

Kemudian ia akan membawa kita ke url http://localhost/pms/users dan menyenaraikan users yang ada didalam pangkalan data.

Sekarang ini anda sudah pun mempunyai kod sumber asas untuk sistem pengurusan projek ini.

Jika anda buka fail Controller/UsersController.php,anda akan melihat fungsi index,view,add,edit dan delete sudah terbina.Fungsi inilah yang memainkan peranan untuk mengawal perjalan sistem anda.

Jika anda buka fail Model/User.php,anda akan melihat validation rules & association telah terbina dan ia akan mengawal bisnes logik aplikasi anda.

Jika anda buka fail View/Users/index.ctp,anda akan melihat kod HTML bersama PHP yang digunakan untuk memapar data dari pangkalan data.Disini jugalah anda akan menghias dan mereka bentuk paparan antaramuka pengguna(User Interface) sistem anda.

Mudah kan?

Page 30: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

30  

6.3 Route Routing adalah salah satu kelebihan yang berfungsi untuk mencantikkan url sebuah sistem web. Route dapat menukarkan url anda dari begini: http://localhost/pms/projects/view/1 kepada http://localhost/pms/projek/tunjuk/1

Untuk mengemaskini route,anda perlu melakukannya pada fail Config/route.php.Kesemua route akan dikawal disini.

Ok mari kita cuba tukar url untuk bahagian projects pada bahasa melayu.

Copy & paste kod dibawah ini ke dalam fail Config/route.php

Router::connect('/senarai-projek', array('controller' => 'projects', 'action' => 'index'));

Router::connect('/projek/tambah', array('controller' => 'projects', 'action' => 'add'));

Router::connect('/senarai-pengguna', array('controller' => 'users', 'action' => 'index'));

Router::connect('/pengguna/tambah', array('controller' => 'users', 'action' => 'add'));

Router::connect('/senarai-peserta-projek', array('controller' => 'project_applicants', 'action' => 'index'));

Router::connect('/peserta-projek/tambah', array('controller' => 'project_applicants', 'action' => 'add'));

Page 31: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

31  

7. Membina fungsi log masuk dan log keluar. (Login & Logout with Simple Authentication and Authorization Application) Rujukan : http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html

7.1 Membuat tetapan dan kemaskini.

Kita perlu menambah satu lagi field di table users,iaitu field “role”.

Untuk melakukan pengubahan ini,kita cuma perlu menambah key dan value seperti dibawah ini pada array $users di dalam fail Config/Schema/schema.php.

'role' => array('type'=> 'string', 'null' => false, 'collate'=> 'latin1_swedish_ci', 'charset'=> 'latin1'),

untuk mengemaskini skema pangkalan data yang baru kita tambah tadi,taip arahan di bawah ini pada terminal/cmd. cake schema update skema pangkalan data akan dikemaskini mengikut field table yang kita tambah tadi. Seterusnya,buka fail Model/User.php Tambahkan index array dibawah ini ke dalam array $validate . 'role' => array( 'valid'=> array( 'rule' => array('inList', array('admin', 'staff')),

'message' => 'Sila pilih salah satu jenis pengguna',

'allowEmpty' => false ) )

Rujuk gambar disebelah.

Page 32: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

32  

Seterusnya buka fail View/Users/add.ctp dan tambahkan kod dibawah ini selepas kod echo $this->Form->input('password); . echo $this->Form->input('role', array( options' => array('admin' => 'Admin', 'staff' => 'Staff') )); Rujuk gambar dibawah.

Page 33: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

33  

7.2 Pengesahan Log Masuk & Log Keluar (Login & Logout Authentication) Kita sekarang sudah boleh bermula untuk membina fungsi pengesahan log masuk dan log keluar untuk sistem pengurusan projek ini. Kita akan menggunakan 2 komponen yang telah terbina bersama CakePHP iaitu: -Komponen Session -Komponen Auth Buka fail Controller/AppController.php dan tambahkan kod dibawah ini ke dalam class AppController. public $components = array( 'Session', 'Auth' => array( 'loginRedirect' => array( 'controller' => 'projects', 'action' => 'index', ), 'logoutRedirect' => array( 'controller' => 'users', 'action' => 'login' ), 'authenticate' => array( 'Form' => array( 'passwordHasher' => 'Blowfish', ) ) ) ); Rujuk gambar di sebelah.

Page 34: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

34  

Kita perlu menambah dua fungsi pada UsersController iaitu fungsi login() dan fungsi logout() untuk mengawal perjalanan log masuk dan log keluar sistem ini. Buka fail Controller/UsersController.php dan tambahkan kod dibawah ini pada class UsersController public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { return $this->redirect($this->Auth->redirectUrl()); } $this->Session->setFlash(__('Maaf ada sila cek semula username & password anda.')); } } public function logout() { return $this->redirect($this->Auth->logout()); }

Rujuk gambar di sebelah.

Page 35: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

35  

Fungsi login akan mengesan sama ada pengguna telah memasukkan data yang sah atau tidak.Jika data yang diberi adalah sah,ia akan membenarkan pengguna mengakses url yang diminta. Fungsi logout akan memadam sesi (Session) pengguna yang telah mengakses sistem dan terus dibawa keluar dari sistem. Seterusnya kita akan membuat paparan untuk fungsi login. Untuk membuat paparan login,anda perlu membuka direktori View/Users/ .dan cipta satu fail bernama login.ctp.Tambahkan kod dibawah ini pada fail login.ctp tadi. <div class="users form"> <?php echo $this->Session->flash('auth'); ?> <?php echo $this->Form->create('User'); ?> <fieldset> <legend> <?php echo __(‘Sila isikan Username & password’); ?> </legend> <?php echo $this->Form->input('username'); echo $this->Form->input('password'); ?> </fieldset> <?php echo $this->Form->end(__('Login')); ?> </div>

Page 36: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

36  

Untuk mengetahui sama ada fungsi ini berjaya atau tidak,sila buka browser dan akses sistem kita. Jika anda berjaya, anda akan mendapat paparan seperti dibawah Seterusnya kita akan menambah hyperlink untuk fungsi logout & login pada header page sistem pms ini. Buka fail View/Layouts/default.ctp,copy kod dibawah ini dan paste ke dalam elemen <header>. <?php

$userDetails = $this->Session->read('Auth.User'); if(isset($userDetails)): echo $this->Html->link('Log Masuk',array('controller'=>'users','action'=>'logout')); else: echo $this->Html->link('Log Keluar',array('controller'=>'users','action'=>'logout')); endif; ?>

Page 37: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

37  

Maksud kod di atas ialah: $this->Session->read(‘Auth.User’) :Membaca sesi pengguna sistem menggunakan Session Helper. if(isset($userDetails)) : Memeriksa sama ada sesi pengguna wujud atau tidak. Jika sesi pengguna wujud, hyperlink akan bertukar kepada teks “Log Keluar” untuk fungsi Logout. Jika tidak,teks hyperlink akan bertukar kepada “Log Masuk” untuk fungsi login. Jika anda berjaya,paparannya adalah seperti di bawah ini. 7.3 Penggunaan fungsi beforeFilter. Rujukan : http://book.cakephp.org/2.0/en/controllers.html#request-life-cycle-callbacks Fungsi beforeFilter adalah fungsi callback yang telah terbina bersama CakePHP . Apa itu fungsi callback (Callback function) ? Secara ringkas fungsi callback ini adalah fungsi yang akan berjalan selepas fungsi yang dipilih telah dijalankan. Contoh callback: beforeFilter akan berfungsi sebelum fungsi yang ada didalam sesebuah controller dijalankan dan selepas fungsi didalam komponen Auth berjaya dijalankan.

Page 38: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

38  

Contoh situasi : Anda membuka sistem anda seperti biasa untuk melihat senarai projek di url http://localhost/pms/projects/index. Akan tetapi,anda telah dibawa ke url http://localhost/pms/users/login . Ini kerana fungsi loginRedirect didalam komponen Auth telah berjalan dan menapis akses anda ke url yang anda minta kerana untuk melihat isi kandungan url http://localhost/pms/projects/index anda perlu log masuk terlebih dahulu. Bagaimana pula jika anda hendak melihat senarai projek tanpa perlu log masuk? Anda hanya perlu menambah kod seperti dibawah ini bersama fungsi beforeFilter ke dalam ProjectsController. Buka fail Controller/ProjectsController.php dan tambah kod dibawah didalam class ProjectsController. public function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('index'); } $this->Auth->allow akan membenarkan fungsi yang dinyatakan didalam parameter allow() berjalan tanpa dihalang oleh Auth.

Page 39: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

39  

Dan sekarang anda buka semula url http://localhost/pms/projects/index. Anda sudah boleh melihat senarai projek seperti paparan dibawah ini. Anda boleh menambah seberapa banyak fungsi yang anda mahu penggunaannya diakses tanpa log masuk ke dalam sistem. Contoh kod: public function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('index',’add’,’view’); } Contoh kod diatas akan membenarkan fungsi index,add dan view pada class ProjectsController diakses tanpa pengguna perlu log masuk ke dalam sistem. Mari teruskan dengan membenarkan fungsi login,logout dan add di UsersController

Page 40: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

40  

dapat diakses sebelum ditapis oleh Auth komponen.Ini membolehkan pengguna mendaftar/menambah pengguna baru . Tambah kod dibawah ini ke dalam fail Controller/UsersController.php public function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('login', 'logout','add'); }

7.4 Password Hashing. Untuk password hashing kita akan gunakan BlowFishPasswordHasher yang terbina bersama CakePHP 2. Untuk mengetahui lebih lanjut tentang Blowfish Encryption sila rujuk: http://en.wikipedia.org/wiki/Blowfish_%28cipher%29 Untuk menggunakan class BlowFishPasswordHasher kita perlu memanggil class tersebut dengan menggunakan kod dibawah ini ke dalam fail Model/User.php: App::uses('BlowfishPasswordHasher', 'Controller/Component/Auth'); Letak kod diatas selepas kod App::uses('AppModel', 'Model');. Seterusnya tambahkan fungsi callback beforeSave ke dalam model User public function beforeSave($options = array()) { if (isset($this->data[$this->alias]['password'])) { $passwordHasher = new BlowfishPasswordHasher(); $this->data[$this->alias]['password'] = $passwordHasher->hash( $this->data[$this->alias]['password'] ); } return true; } Sekarang ini,apabila anda menambah pengguna baru,setiap password akan disulitkan dengan beberapa unik karakter yang dipilih secara rawak. Contoh password yang telah menggunakan BlowFishPasswordHasher

Page 41: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

41  

7.5 Penapisan akses kandungan mengikut kategori pengguna sistem (Authorization). Sekarang ini,kita akan menambah penapisan bagi setiap pengguna yang akan mengakses sistem ini supaya mereka berada di kawasan yang sepatutnya. Contohnya pengguna di dalam kategori staff tidak dibenarkan untuk edit atau delete projek yang telah dicipta oleh admin. Untuk menjayakan kaedah ini,anda perlu mengubah beberapa kod di model,view,dan controller. Kita akan buat pada satu seksyen dahulu iaitu seksyen projects.Untuk seksyen seterusnya (seksyen users,sekysen project applicants) ,anda cuma perlu mengikuti langkah-langkah dibawah ini semula dan ubah kod mengikut nama controller/model seksyen yang anda ubah. Kita mula dengan mengubah kod di dalam fail View/Projects/add.ctp. Sila buang kod dibawah ini dari fail View/Projects/add.ctp echo $this->Form->input('user_id'); Kemudian buka fail Controller/ProjectsController.php dan tambahkan kod dibawah ini didalam fungsi add. $this->request->data['Project']['user_id'] = $this->Auth->user('id'); Kod fungsi add anda haruslah seperti dibawah ini public function add() { if ($this->request->is('post')) { $this->request->data['Project']['user_id'] = $this->Auth->user('id'); $this->Project->create(); if ($this->Project->save($this->request->data)) { $this->Session->setFlash(__('Projek berjaya disimpan!')); return $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__('Maaf projek tidak berjaya disimpan,sila cuba sekali lagi')); } } $users = $this->Project->User->find('list'); $this->set(compact('users')); }

Page 42: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

42  

Fungsi $this->Auth->user() akan membaca data pengguna yang telah log masuk kedalam sistem.Jika anda mengisi parameter id seperti $this->Auth->user(‘id),ia akan mengambil id pengguna tersebut sahaja. Seterusnya buka fail Controller/AppController.php dan tambah kod dibawah ini pada array komponen Auth. 'authorize' => array('Controller') dan tambahkan fungsi isAuthorized() untuk mengesan kategori pengguna yang log masuk ke sistem. public function isAuthorized($user) { // Admin boleh akses semua fungsi if (isset($user['role']) && $user['role'] === 'admin') { return true; } // Jika bukan admin,tidak dibenarkan akses return false; } Kod anda haruslah seperti dibawah ini.Rujuk gambar.

Page 43: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

43  

Kita baru sahaja membina mekanisma pengesahan yang mudah dalam masa yang singkat. Dengan ini,pengguna yang didalam kategori admin akan dapat mengakses kesemua lokasi sistem tetapi tidak pada staff. Untuk membenarkan staff atau pengguna lain yang sudah log masuk mengakses pada lokasi tertentu (contoh: http://localhost/pms/projects/add) ,ianya amat mudah.Kita akan gunakan fungsi isAuthorized sekali lagi tetapi pada kali ini kita tambah pada controller Projects. Buka fail Controller/ProjectsController.php dan tambah kod dibawah ini, public function isAuthorized($user) { //akan memberi akses kepada pengguna yang sudah log masuk

//supaya dapat menambah projek baru if ($this->action === 'add') { return true; } } Dengan fungsi di atas ini,kita akan membenarkan staff untuk menambah projek baru. Baiklah,mari kita cuba apa yang kita sudah buat. Anda akan mendapat paparan seperti dibawah ini jika anda berjaya.

Page 44: Asas cakephp-mvc

Asas  CakePHP  MVC:  Membina  Aplikasi  Web  (CRUD)  CakePHP  2.    

No  Siri:DIR01   ©Hakcipta  Terpelihara  2014      

44  

Jika anda mengalami sebarang masalah ,anda perlu mengulangi dan mengikut langkah-langkah yang diberi dengan teliti atau anda boleh mendapatkan semua kod sumber untuk sistem ini di github saya di https://github.com/malikperang/pms. Jika anda mengalami masalah dengan konfigurasi database atau konfigurasi CakePHP, Pergi ke https://github.com/malikperang/pms/tree/master/Config. Jika anda mengalami masalah dengan Model, Pergi ke https://github.com/malikperang/pms/tree/master/Model. Jika anda mengalami masalah dengan Controller, Pergi ke https://github.com/malikperang/pms/tree/master/Controller. Jika anda mengalamai masalah dengan View Pergi ke https://github.com/malikperang/pms/tree/master/View. Sila kenalpasti jenis masalah anda dan semak semula panduan ini dengan teliti dan jika anda mahu bertanya secara peribadi boleh e-mail saya di [email protected].