Tadi masa training @ PMO, saya membuat contoh Search Engine menggunakan model Post dan Category.
Schema Post
---------------------------------
id |title |created | modified
Schema Post
---------------------------------
id | category_id | title | contents | created | modified
Relations
----------------------------------
Post belongsTo Category
Category hasMany Post
Strategi untuk Search
----------------------------------
1. User boleh search by keyword tanpa pilih Category. Akan return semua data
2. User boleh search by keyword tapi terhad kepada Category tertentu
3. Guna wildcard OR dan AND serentak. AND digunakan jika nilai $category_id dikesan
4. Pagination digunakan hasil carian dan bawa keyword menggunakan URL
Screen Shots
----------------------------------
User search all by Category dan Paginated. Cuba klik gambar dan lihat URL
User Search 'title' dan pilih All Category
User Search 'title' dan pilih Category 'Public' dan Paginated
Query dibawa menggunakan URL serta CategoryId
Teknik dalam Controller
-------------------------------------
Contoh Full Code posts_controller.php
Contoh Full Code posts_controller.php
1. Search query dan category_id dihantar ke action Search menggunakan method $_POST
2. Dalam Search Controller kena buat conditional checking samaada Query dihantar menggunakan $_POST atau $this->PassedArgs ?
3. Nilai akhir $query dan $category_id digunakan untuk Search function
Teknik dalam Paginator
------------------------------------
1. Search.ctp akan keluarkan result dia mempunyai result. Untuk memaksima usability, Pagination di asingkan dari Search.ctp dan diletakkan di dalam views/elements/paging.ctp
2. Dalam paging.ctp kena buat conditional checking untuk URL options
Contoh paging.ctp
Copyright
Azril Nazli Alias
CakePHP Trainer
019 3718462
Tiada ulasan:
Catat Ulasan