Trước đây Internet là một khái niệm khá xa lạ với mọi người. Internet dường như chỉ được sử dụng trong phạm vi nhỏ và chỉ dành cho những người có kiến thức về tin học.Nhưng ngày nay, người sử dụng Internet có thể là bất cứ ai, chỉ cần vài bước đơn giản là người dùng có thể sử dụng Internet một cách dễ dàng để thực hiện một số nhu cầu của mình như:xem phim, chơi game, đọc báo.. Có thể nói Internet là một một thư viện thông tin khổng lồ được cập nhật liên tục từng phút từng giây, và phát triển với tốc độ chóng mặt, nội dung của những thông tin đó sẽ được hiển thị trên những trang web. Với sự ra đời của Web 2.0 thì số lượng người sử dụng Internet lại càng tăng cao, và các ứng dụng của nó ngày càng phổ biến, điều đó được thể hiện trên những trang web với nhiều thể loại khác nhau như:web tin tức, web bán hàng, web giải trí.. Để có được những trang web như vậy thì phải cần đến những lập trình viên, họ là những người tạo nên những trang web với những ngôn ngữ lập trình khác nhau. Hiện nay có rất nhiều ngôn ngữ lập trình web như:ASP, ASP.NET, C#, VB, PHP, JAVA.. và phổ biến nhất hiện nay là ASP và PHP. Trong đó thì PHP được sử dụng rộng rãi vì đây là mã nguồn mở rất dễ sử dụng. Ngôn ngữ PHP có thêm những framework hỗ trợ người lập trình rất nhiều trong quá trình viết code. Đứng đầu trong nhóm framework đó thì Yii là giải pháp tốt nhất cho người lập trình vì các đặc tính nổi trội của nó, đây cũng là lý do em chọn đề tài tìm hiểu về Yii và xây dựng ứng dụng.
Trang 1KHOA: CÔNG NGHỆ THÔNG TIN NGÀNH: QUẢN TRỊ MẠNG
*******
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
6 TÌM HIỂU VỀ Yii FRAMEWORK VÀ XÂY
DỰNG ỨNG DỤNG MINH HỌA
Hà Nội 2012
Trang 2KHOA: CÔNG NGHỆ THÔNG TIN NGÀNH: QUẢN TRỊ MẠNG
Trang 3MỤC LỤC:
LỜI NÓI ĐẦU: 1
BỐ CỤC CỦA ĐỒ ÁN 2
CHƯƠNG 1 :MỞ ĐẦU 3
1.1.SYMFONY 3
1.2.PRADO 3
1.3.CAKEPHP 4
1.4.ZEND 4
1.5.CODEIGNITER 5
1.6.GIỚI THIỆU YII VÀ FRAMEWORD 5
CHƯƠNG 2:GIỚI THIỆU VỀ YII FRAMEWORK 7
2.1.KHÁI QUÁT VỀ YII: 7
2.1.1 Lịch sử phát triển: 7
2.1.2 Các ưu điểm: 7
2.2.KIẾN TRÚC YII FRAMEWORK: 8
2.3.CẤU TRÚC THƯ MỤC YII: 10
2.4 APPLICATION: 12
2.5 MODEL-TRAO ĐỔI THÔNG TIN: 14
2.5.1 Tạo model: 14
2.5.2 Định nghĩa lớp model: 15
2.5.3 Đặt luật cho model: 15
2.5.4 Kết nối với bảng trong cơ sở dữ liệu 15
2.5.5 Ánh xạ các cột trong cơ sở dữ liệu thành các thuộc tính của model 16
2.5.6 Cách thức truy vấn từ bảng cơ sở dữ liệu trong model 18
2.6 CONTROLER-BỘ ĐIỂU KHIỂN: 19
2.7 VIEW-HIỆN DỮ LIỆU: 20
CHƯƠNG 3:CÁC KĨ THUẬT ÁP DỤNG ĐỂ XÂY DỰNG ỨNG DỤNG 24
4.1.KIẾN TRÚC MVC: 24
4.2.CÁC MỞ RÔNG(EXTENSIONS): 26
4.3.TẠO KHUNG ỨNG DỤNG: 29
CHƯƠNG 4:XÂY DỰNG ỨNG DỤNG BẰNG YII 31
4.1 KHẢO SÁT HIỆN TRẠNG VÀ ĐÁNH GIÁ KHẢ THI: 31
4.1.1 Khảo sát quy trình tác nghiệp: 31
4.1.2 Khảo sát yêu cầu của một số cửa hàng kinh doanh sản phẩm di động: 31
4.1.3 Khảo sát yêu cầu hệ thống: 32
4.1.4 Một số biểu mẫu thường dùng: 32
4.2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG VỀ CHỨC NĂNG: 35
4.2.1 Xác định tác nhân ngoài và hồ sơ dữ liệu: 35
Trang 44.2.2 Nhóm chức năng quản lý công việc: 36
4.2.3 Các biểu tượng, hình vẽ và ký hiệu sử dụng trong bài PTTKHT 37
4.2.4 Mô hình xác định phạm vi hệ thống: 37
4.3.THIẾT KẾ MÔ HÌNH CƠ SỞ DỮ LIỆU: 49
4.4.SƠ ĐỒ THỰC THỂ QUAN HỆ 54
4.5.MÔ TẢ ỨNG DỤNG MINH HỌA: 55
4.5.1 User: 55
4.5.2 Member : 68
4.5.3 Quản trị: 70
KẾT LUẬN 79
PHỤ LỤC 80
DANH MỤC TÀI LIỆU THAM KHẢO 85
LỜI CAM ĐOAN: 86
Trang 5LỜI NÓI ĐẦU:
Trước đây Internet là một khái niệm khá xa lạ với mọi người Internetdường như chỉ được sử dụng trong phạm vi nhỏ và chỉ dành cho những người cókiến thức về tin học.Nhưng ngày nay, người sử dụng Internet có thể là bất cứ ai,chỉ cần vài bước đơn giản là người dùng có thể sử dụng Internet một cách dễdàng để thực hiện một số nhu cầu của mình như:xem phim, chơi game, đọc báo
Có thể nói Internet là một một thư viện thông tin khổng lồ được cập nhật liên tụctừng phút từng giây, và phát triển với tốc độ chóng mặt, nội dung của nhữngthông tin đó sẽ được hiển thị trên những trang web Với sự ra đời của Web 2.0thì số lượng người sử dụng Internet lại càng tăng cao, và các ứng dụng của nóngày càng phổ biến, điều đó được thể hiện trên những trang web với nhiều thểloại khác nhau như:web tin tức, web bán hàng, web giải trí
Để có được những trang web như vậy thì phải cần đến những lập trình viên,
họ là những người tạo nên những trang web với những ngôn ngữ lập trình khácnhau Hiện nay có rất nhiều ngôn ngữ lập trình web như:ASP, ASP.NET, C#,
VB, PHP, JAVA và phổ biến nhất hiện nay là ASP và PHP Trong đó thì PHPđược sử dụng rộng rãi vì đây là mã nguồn mở rất dễ sử dụng Ngôn ngữ PHP cóthêm những framework hỗ trợ người lập trình rất nhiều trong quá trình viết code.Đứng đầu trong nhóm framework đó thì Yii là giải pháp tốt nhất cho người lậptrình vì các đặc tính nổi trội của nó, đây cũng là lý do em chọn đề tài tìm hiểu vềYii và xây dựng ứng dụng
Hà Nội ngày tháng năm 2012
SVTH: Phạm Thị Hoài Thương
Mã số: 508100180
Trang 6Chương 2: Các thành phần trong Yii framework:
Trình bài về Yii framework:khái quát, lịch sử, các ưu điểm chính.Giới thiệuchi tiết về cấu trúc của Yii, đặt biệt là về mô hình MVC
Chương 3:Các kĩ thuật áp dụng trong ứng dụng minh hoạ
Giới thiệu về những chức năng của Yii và việc áp dụng nó vào việc xâydựng ứng dụng minh hoạ như:các thành phần mở rộng(extension), ajax
Chương 4:Xây dựng ứng dụng bằng Yii
Giới thiệu về kết quả của ứng dụng đã được xây dựng bằng Yiiframework:website bán điện thoại di động
Trang 7Chương 1 :
MỞ ĐẦU1.1 SYMFONY
Hinh 1-1:Symfony
Ban đầu Symfony do một cá nhân phát triển chỉ dành riêng cho công ty.Sau này được công bố và có phiên bản chính thức 1.1 và phiên bản 1.2 cho cáclập trình viên Được đánh giá thích hợp cho những dự án lớn Symfony đượcviết hoàn toàn bằng PHP5 theo mô hình MVC(Model-View-Controller), chứanhiều công cụ ứng dụng và lớp giúp phát triển nhanh một ứng dụng web Tươngthích với hầu hết các công cụ cơ sở dữ liệu có sẵn, bao gồm cả MySQL,PostgreSQL, Oracle, và Microsoft SQL Server Dễ dàng mở rộng và tích hợpcác thư viện của nhà cung cấp khác
web
Trang 81.3 CAKEPHP
Hình 1-3: CakePHP
Là một framework mã nguồn mở, miễn phí dành cho việc phát triển ứngdụng web bằng PHP mục đích của CakePHP là cung cấp một framework chongười sử dụng PHP phát triển những ứng dụng web nhanh, mạnh mà không mấttính linh hoạt của nó Được xây dựng theo mô hình MVC, hỗ trợ tạo kết nối cơ
sở dữ liệu một cách dễ dàng, sinh code tự động, cung cấp khả năng bắt lỗi, tíchhợp nhiều thư viện hỗ trợ ajax, HTML Có sẵn các công cụ xử lý Email,Security, Session, Cookies, Request Handling
Trang 9để đảm bảo website được tổ chức theo cách tốt nhất, ngoài ra nó còn có cácthành phần khác như xác thực (authentication), tìm kiếm(searching),localization, PDF, email và web services Hỗ trợ đầy đủ các tính năng cần thiếtcho ứng dụng như kiểm tra lỗi (debug), bộ nhớ điệm(cache), bộ lọc(filter).
1.5 CODEIGNITER
Hình 1-5:CodeIgniter
CodeIgnniter là một nền tảng của ứng dụng web mã nguồn mở được viếtbằng ngôn ngữ PHP bởi Rick Elli Được thiết kế theo mô hình MVC, gói cài đặtnhỏ gọn, tốc độ nhanh:nhờ cơ chế lưu vào bộ nhớ đệm, miễn phí:cho phép ngườidùng thay đổi, phát triển và phân phối mã nguồn mở, hệ thống thư viện phongphú, cơ chế kiểm tra dữ liệu chặc chẽ
1.6 GIỚI THIỆU YII VÀ FRAMEWORD
Yii framework là một framework nổi bật hiện nay Được xây dựng theo môhình MVC, gói cài đặt nhanh chóng, hiệu suất nhanh, miễn phí, sử dụng dễdàng, dễ quản lý sửa code, hệ thống thư viện phong phú
Yii là một framework có rất nhiều tính năng rất nổi bậc:nhanh, gọn, hiệusuất làm việc cao
Trang 10Hình 1- 6:Hiệu suất Yii
RPS (request per page) viết tắt của “yêu cầu mỗi giây” trong đó mô tả baonhiêu yêu cầu một ứng dụng được viết trong một khuôn khổ có thể xử lý mỗigiây
Trang 11Chương 2:
GIỚI THIỆU VỀ YII FRAMEWORK2.1 KHÁI QUÁT VỀ Yii:
Yii là từ viết tắt của Yes, it is! hoặc cũng có thể là viết ngắn gọn 3 chữ cái
đầu của Easy (dễ dàng), Efficient (hiệu quả) và Extensible (khả năng mở rộng).Yii là một PHP framework mã nguồn mở và hoàn toàn miễn phí, có hiệu năngcao, giúp người lập trình phát triển tốt nhất các ứng dụng Web 2.0 Yii cho phéptái sử dụng tối đa các thành phần của ứng dụng để tăng tốc độ viết ứng dụng
Tiền thân của Yii chính là PRADO framework Tác giả của Yii là QiangXue, một người Trung Quốc Qiang Xue bắt đầu xây dựng Yii vào khoảng1/1/2008 Qiang Xue cũng chính là người đã từng phát triển và duy trì PRADO,tuy nhiên, nhận thấy PRADO có nhiều hạn chế và bản thân Qiang Xue muốnphát triển một framework mang những đặc điểm như dễ sử dụng, dễ tiếp cận,bảo mật cao và chuyên nghiệp hơn nên Qiang Xue đã sử dụng kinh nghiệm củamình trong thời gian phát triển PRADO để viết ra Yii Sau gần 1 năm phát triển,tới 8/12/2008, bản Yii đầu tiên đã được công bố và nhanh chóng được mọi
người đón nhận.
2.1.2. Các ưu điểm:
Ưu điểm của Yii là tính đơn giản trong cách viết kết hợp với thế mạnh PHP
và cơ chế mảng index (associative array) Yii cũng được viết bởi những ngườiviết "thực tế" hơn Zend nên có sẵn những công cụ "phù hợp" nhất cho ngườiviết ứng dụng
Yii là framework MVC nhưng có kiến trúc OOP rất tốt và lại hướng đốitượng nên mức độ tái sử dụng giữa các dự án rất cao Yii đặc biệt chạy nhanhhơn Zend và Symfony Yii rất nhẹ và được trang bị giải pháp bộ nhớ đệm tối ưunên nó đặc biệt hữu dụng cho ứng dụng web có dung lượng dữ liệu trên đường
truyền lớn như web portal, forum, CMS, e-commerce, v.v Nó là kết quả của
kinh nghiệm phát triển ứng dụng Web lâu năm của các tác giả và sự phân tích kỹlưỡng, tận dụng những điểm mạnh của các framework khác
Trang 122.2 KIẾN TRÚC Yii FRAMEWORK:
Yii được viết theo mô hình MVC, đây là mô hình thông dụng trong lậptrình web Mô hình MVC tách biệt phần xử lý dữ liệu ra khỏi phần giao diện,cho phép kiểm tra, quản lý và bảo trì một cách dễ dàng và độc lập:
Hình 2-1: Mô hình MVC
Bên cạnh đó Yii còn phát triển thêm một bộ điều khiển phía trước gọi làApplication Application thu thập một số yêu cầu của người dùng sau đó đưađến cho controller thích hợp để xử lý thêm
Hình 2-2: Cấu trúc tĩnh của Yii Application
Để hiểu rõ hơn về cách thức phối hợp của Yii ta có thể xem ví dụ dưới đây về các xử lý yêu cầu nhập vào từ người dùng
widget
index.php application
controller
app components s
app components s
View
Controller
Model
Trang 13Hình 2-3: Quy trình làm việc của một ứng dụng Yii
Quá trình phối hợp của Yii được mô tả theo các bước sau:
- Bước1: người dùng tạo yêu cầu đối với url (ví dụ:với thanh địa chỉ:
web xử lý yêu cầu đó bằng cách thực hiện script bootstrap index.php
- Bước 2: script bootstrap tạo ra một Application và chạy nó
- Bước 3:Application có được chi tiết yêu cầu của người dùng từ
application component có tên là request
Controller
filters
action
4 5
urlManager
index php index php
Trang 14- Bước 4: Application này xác định yêu cầu controller và action với sự
giúp đỡ của một application component có tên urlManager
- Bước 5: Application tạo ra một bộ điều khiển để tiếp tục xử lý yêu cầu
người dùng, bộ điều khiển nhận thấy action (show) có liên quan đếnphương thức(actionShow) trong controller Sau đó nó sẽ tạo ra các bộlọc để kết hợp với action này.Các action sẽ được thực hiện dưới sự chophép của các bộ lọc
- Bước 6: Action sẽ đọc Post model với ID=1 với dữ liệu từ database
- Bước 7: Action sẽ render một view có tên là show với Post model
- Bước 8:View sẽ đọc là trình bài các thuộc tính của Post model
- Bước 9: View sẽ thực hiện một số widgets
- Bước 10: Kết quả của view sẽ được nhúng vào layout
- Bước 11:Action hoàn thành các kết quà của view và hiện kết quả
nguời dùng
2.3 CẤU TRÚC THƯ MỤC Yii:
Hình 2-4: Cấu trúc Yii
Trang 15Trong đó thư mục chính là 3 thư mục:models, controllers, views
index.php file script truy cập đến ứng dụng web
index-test.php file script truy cập đến các chức năng
kiểm định
protected chứa các file bảo vệ của ứng dụng
components chứa các components có thể sử dụng
lại
controller chứa các tập tin lớp điều khiển
view chứa các file điều khiển xem và bố trí
của ứng dụng
Unix/Linux
Bảng 2-5:Chức năng các thư mục và file trong cấu trúc Yii
2.4 APPLICATION:
Application có nhiệm là thu thập một số thông tin cơ bản về yêu cầu ngườidùng, và gửi nó đến một bộ controller thích hợp để xử lý Các đối tượng
Trang 16application được khởi tạo như một singleton của entry script Các applicationsingleton có thể được gọi bất cứ nơi nào nhờ Yii::app().
Application Base Directory:
Application base directory là thư mục gốc,chứa tất cả các PHP script bảo
mật và dữ liệu Nội dung của nó cần được bảo vệ chống lại sự truy cập Web Với máy chủ Apache HTTP, điều này có thể được thực hiện dễ dàng bằng cách
đặt một tập tin htaccess trong thư mục gốc Nội dung của tập tin này như sau:deny from all
Application Components có chức năng giúp người lập trình sử dụng và mở
rộng các application một cách dễ dàng Bằng cách cấu hình các thành phần của
các ví dụ application, chúng ta có thể tùy chỉnh các giá trị lớp của bất kỳ thànhphần ứng dụng được sử dụng Ví dụ, chúng ta có thể cấu hình thành phần
CMemCache để nó có thể sử dụng nhiều máy chủ cho bộ nhớ đệm
Core Application Components là một tập hợp các thành phần ứng dụng cốtlõi để cung cấp các tính năng phổ biến trong các ứng dụng Web Bằng cách cấu
array('host'=>'server1', 'port'=>11211, 'weight'=>60),
array('host'=>'server2', 'port'=>11211, 'weight'=>40),
),
), ), )
Trang 17hình các thuộc tính của các thành phần cốt lõi, chúng ta có thể thay đổi hành vimặc định gần như mọi khía cạnh của Yii Dưới đây là danh sách các thành phầnứng dụng
TÊN CÁC THÀNH PHẦN ỨNG
assetManager: CAssetManager quản lý việc xuất bản các tập tin
riêng
authManager: CAuthManager quản lý kiểm soát truy cập
cache: CCache cung cấp dữ liệu bộ nhớ đệm
clientScript: CClientScript quản lý lệnh của người dùng
(JavaScript và CSS)
coreMessages: CPhpMessageSource cung cấp thông điệp cốt lõi dịch được
sử dụng bởi các khuôn khổ Yii
db: CDbConnection Cung cấp các kết nối cơ sở dữ
liệu.Lưu ý, phải cấu hình connectionString để sử dụng thành phần này
errorHandler: CErrorHandler xử lý lỗi
format: CFormatter định dạng dữ liệu giá trị cho mục đích
hiển thịmessages: CPhpMessageSource cung cấp thông dịch được sử dụng
bởi ứng dụng Yiirequest: CHttpRequest cung cấp thông tin liên quan đến yêu
cầu người dùngsecurityManager: CSecurityManage
cụcurlManager: CUrlManager cung cấp các phân tích cú pháp URL
và chức năng sáng tạouser: CWebUser mang thông tin liên quan đến danh
Trang 18tính người dùng hiện hànhthemeManager: CThemeManager quản lý chủ đề
Bảng 2-6:Bảng các thành phần ứng dụng trong Yii
Model là lớp được xây dựng nhằm trao đổi thông tin với cơ sở dữ liệu Mộtlớp model có thể thực hiện việc kết nối, thêm, xoá, sửa dữ liệu Theo lời khuyêncủa các lập trình viên ta nên tuân theo một số nguyên tắc sau:
Không nên sử dụng $_GET, $_POST hoặc các biến tương tự được gắnliền với yêu cầu người dùng
Tránh nhúng đoạn mã HTML vào model
Tên lớp được viết hoa chữ cái đầu tiên, các chữ còn lại viết thường, ví dụnhư:Products,Ticket
Tên tập tin được đặt tên trùng với tên lớp và được đặt vào thư mụcprotected/models
Bắt buộc thừa kế từ lớp model Trong hàm tạo lớp con phải gọi đến hàmlớp cha
2.5.1 Tạo model:
Để xây dựng một lớp model, phải quyết định loại dữ liệu từ người dùngyêu cầu và những luật lệ mà những dữ liệu này phải tuân theo Một model, nhưđịnh nghĩa, là nơi trung tâm để xác nhận yêu cầu
Tùy thuộc vào cách ta sử dụng các đầu vào của người sử dụng, ta có thể tạo
ra hai loại mô hình Nếu yêu cầu của người dùng nhập vào được sử dụng và sau
đó bỏ đi, ta sẽ tạo ra một form_model, nếu yêu cầu của người dùng nhập vào
được lưu vào cơ sở dữ liệu, ta sẽ sử dụng một active record thay thế
Dưới đây là lớp Products dùng để xử lý phần sản phẩm:
Trang 19class Products extends CActiveRecord{
public static function model($className = CLASS ) {
return parent::model ( $className );
}
Khi đã định nghĩa xong lớp model ta sẽ đặt luật cho model
Để đặt luật cho model ta dùng hàm
// Đặt luật cho model
Một khi người dùng gửi các yêu cầu của mình ta cần đảm bảo chúng phải
hợp lệ trước khi sử dụng Ta xác định luật trong phương thức rules (), tuỳ
thuộc vào yêu cầu mà ta xác lập trong hàm rules() sẽ trả về điều kiện theo ta đặt ra:
2.5.4 Kết nối với bảng trong cơ sở dữ liệu
Lớp model có chức năng kết nối với các bảng trong cơ sở dữ liệu Để thể hiện mối liên kết đó ta dùng
Trang 20Hàm này có chức năng ánh xạ các cột trong bảng của cơ sở dữ liệu thành các thuộc tính của model, để model có thể truy xuất và sử dụng.Ví dụ sử dụng bảng products sau đây:
TÊN CỘT TRONG BẢNG
PRODUCTS
TÊN CÁC THUỘC TÍNH TRONG MODEL
Trang 21Hinh 2-9: Bước tạo lớp products
Đầu tiên ta chọn mục Model Generator, sau đó điền tên bảng (trùng tênbảng trong cơ sở dữ liệu), tiếp tục ta nhấn nút Generate, thì chức năng này sẽ tựphát sinh ra code tạo ra file Products trong thư mục model chứa lớp Products.Lớp này cũng tương tự như ta viết code tay nhưng hàm rules() lại trả về mảng,phần tử của mảng là các thuộc tính trong bảng
Trang 22public function rules()
// Please remove those attributes that should not be searched.
array('id, name, cat_id, img, quantity, warranty, description, price, is_hot, create_user, create_date, Click, promotion_id, GPRS, Bluetooth, BG, Camung', 'safe', 'on'=>'search'),
);
}
Tương tự đối với hàm attributeLabels() cũng vậy
2.5.6 Cách thức truy vấn từ bảng cơ sở dữ liệu trong model
Nhờ vào model mà ta có thể truy vấn đến dữ liệu trong cơ sở dữ liệu Bằngviệc định nghĩa thêm các hàm ta có thể thực hiện các chức năng chỉnh sửa, truyxuất hay xoá các dữ liệu trong bảng cơ sở dữ liệu
-Hàm chỉnh sửa updateRowById() : hàm này có chức năng chỉnh
sửa thông tin theo tham số truyền vào
-Hàm thêm mới insertRow(): có chức năng thêm mới trong cơ sở
dữ liệu.
Trang 23-Hàm xoá deleteRowById($id) : hàm này có chức năng xoá trong bảng cơ sở dữ liệu theo điều kiện id phù hợp.
-Hàm lấy toàn bộ dữ liệu getAllRows(): chức năng của hàm là truy xuất toàn bộ dữ liệu từ một bảng trong cơ sở dữ liệu
Như vậy nhiệm vụ của model là liên kết với cơ sở dữ liệu, và để sử dụngnhững kết quả mà lớp model thực hiện thì ta phải cần đến bộ điềukhiển(controller) Tại đây những hàm trong model sẽ được gọi lại và xử lý theoyêu cầu người dùng
Controller là những lớp đóng vai trò trung gian giữa view và model
Controller nhận các yêu cầu từ phía người dùng, kiểm tra chúng trước khichuyển qua cho model Sau khi model xử lý yêu cầu và trả về cho controller,controller sẽ chuyển sang view để hiện thị dữ liệu cho người dùng
Một lớp controller trong Yii có dạng:
class ProductsController extends Controller
{
/* Các hàm xu ly */
}
Khai báo hàm cotroller ta cần tuân theo một số nguyên tắc
- Tên lớp được viết hoa chữ cái đầu tiên, các chữ còn lại viết thường, ví
- Cotroller thể hiện của lớp CController hoặc của một lớp mở rộng từ
CController Khi một controller chạy nó thực hiện các hành động đượcyêu cầu thường là mang từ model và sau đó render đến view Một hànhđộng, thực chất là một lớp điều khiển có tên bắt đầu bằng action
Trang 24Các thành phần chính của controller
Route
Route là thành phần quan trọng trong controller, nó giúp controller địnhtuyến một địa chỉ khi người dùng gửi yêu cầu đến hệ thống.Ví dụ khi ngườidùng nhập điạ chỉ http://hostname/index.php?r=post/edit/, thì địa chỉ này sẽđược bộ điều hướng của Yii xử lý và gọi đến action được yêu cầu trongcontroller Trong đó
- post: là tên controller
- edit:là tên action trong controller
Action:
Phương thức làm việc trong controller là làm nhiệm vụ tiếp nhận và xử lýyêu cầu Sau khi nhận kết quả từ model trả về, controller sẽ gọi đến view để hiệnthị kết quả cho người dùng
Một action thường được định nghĩa như một phương pháp có tên bắt đầubằng action Thông thường trong controller ta sẽ khai báo thêm các hàm action
để thực hiện các yêu cầu người dùng Cũng giống như model ta có thể dùng Gii
để tạo controller, nhưng kết quả trong controller chỉ tạo ra actionIndex
Đây là hành động sẽ điều khiển đến trang index.php
Trang 25chỉ là một phần của trang web (header, footer, ) Nội dung của view ngoài mãHTML còn có mã PHP View không bao giờ được gọi trực tiếp mà phải thông
qua controller Ví dụ ta có một actionView($id) trong lớp NickchatController
như sau:
Thì trong view ta sẽ có nội dung :
Nội dung của view bao gồm mã html(thẻ <div>, <b>, <br>) và mã php
Trong đó thì Yii dùng hàm echo CHtml::encode($data->getAttributeLabe(‘’));
để lấy ánh xạ các tên cột trong bảng nickchat thành các thuộc tính trong model,
ví dụ như ‘mota’=>‘Mota’.Và hàm CHtml::link() để tạo link liên kết
Trang 26Bên cạnh đó trong view của Yii còn hỗ trợ về form
Một số khái niệm liên quan đến view:
Nó là một view đặc biệt được dùng để trang trí cho view Layout thườngchứa một phần của giao diện người dùng được phổ biến một vài lần.Ví dụ mộtlayout có thể chứa phần header và footer, nhúng thêm phần nội dung hiển thịcủa view:
Layout được sử dụng khi ta gọi hàm render(), theo mặc định file main.php trong thư mục protected/views/layouts được sử dụng làm layout trong view.Ta
có thể tuỳ chỉnh bằng cách thay đổi
CWebApplication::layout,CController::layout Nếu view mà không cần một layout nào ta dùng hàm renderPartial ()
Widget:
Widget có thể được định nghĩa là một lớp con, có thể sử dụng lại nhằm tạođiều kiện tốt hơn trong mã giao diện người dùng
Được thể hiện bởi CWidget hoặc lớp con của CWidget Đó là một thành
phần chủ yếu cho các mục đích presentational Để dùng lại widget ta dùng
<?php $this->widget('ProductNew')?>
Đặc biệt những lớp gọi bằng widget phải được viết trong thư mụccomponents, ví dụ:protected/components/ProductNew.php Trong đó fileProductNew chứa lớp ProductNew kế thừa từ CPortlet
……… header here………
<?php echo $content ?>
……… footer here ………
Trang 27Lớp này sẽ thực hiện một số yêu cầu xử lý và truyền vào view chứa trongthư mục components/view có nội dụng như sau:
echo "<li style='width:33.33%'>";
echo "<a href='".$url->createUrl("products/productdetail") "?id="
echo "</li>";
}
?>
Trang 28class Category extends CPortlet
{
protected function renderContent(){
$model = new CategoryProduct();
$data = $model->getAllRows();
$this->render("list",array("data"=>$data));
}
}
Đầu tiên ta khai báo biến $model cho kế thừa từ lớp CategoryProduct Sau
đó ta chỉ việc gọi đến hàm getAllRows() trong lớp CategoryProduct, thì hàm
này sẽ xử lý yêu cầu lấy ra tất cả các nhà sản xuất, và hiện ra giao diện chongười dùng trong file list.php có nội dung như sau
Trang 30Đặt biệt Yii hỗ trợ ajax rất nhiều, có thể kết hợp ajax và jquery rất dễ dàng
Hàm login() xử lý chức năng đăng nhập, hàm này sẽ chuyển yêu cầu tới
actionAjaxLogin trong controller
Đây là phần mở rộng trong Yii với nhiều phần rất hữu ích Được cung cấp
tại web site chính:http://www.yiiframework.com/extensions/
Hình 3-1: Extensions của Yii
Ví dụ trong phần xây dựng ứng dụng, em đã dùng phần PHPMailer_v5.1.Yêu cầu để xử dụng được phần extension này thì sau khi download góiPHPMailer_v5.1, ta phải giải nén và đưa và thư mục protected/extension, và để
sử dụng được ta sẽ gọi lại hàm cần thiết trong Controller
Trang 31$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // set the port to use
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->SMTPSecure = 'ssl';
$mail->Username = "thuongpham@gmail.com";
$mail->Password = "pass";
$from = "thuongpham@gmail.com"; // Reply to this email
$to=($remail); // Recipients email ID
$name=($reusename); // Recipient's name
$mail->From = $from;
$mail->FromName = "thuongphammobile.org";
Trang 32Đây là action được khai báo trong controller để thực hiện yêu cầu gửi mail.
Để sử dụng action này đầu tiên ta sẽ dùng câu lệnh:
$mail->Body = ($description); //HTML Body
$mail->AltBody = "Bạn Nhận Được Thư 'Lấy Lại Mật Khẩu' - http://dhphuongdong.com"; //Text Body
//$mail->SMTPDebug = 2;
if(!$mail->Send()) {
echo "<h1>Loi khi goi mail: " $mail->ErrorInfo ; }
else {
echo "<h1>Send mail thanh cong</h1>";
Trang 33Lệnh này sẽ import extensions cho ta sử dụng.Với ứng dụng của extensionsnày ta có thể mượn địa chỉ gmail để gửi mail, đây là một tiện ích rất hay của Yii
Công cụ yiic giúp ta tạo ra ứng dụng một cách nhanh chóng
C:\xampp\htdocs\Yii\framework>yiic webapp C:\xampp\htdocs\vidu
Ví dụ ta tạo một ứng dụng tên là vidu được lưu trong thư mục C:\xampp\
htdocs Sau đây là kết quả của câu lệnh trên, ta sẽ được một ứng dụng như sau:
Hình 3-2:Ứng dụng ví dụ
Và thư mục vidu có cấu trúc như thế này:
Hình 3-3: Cấu trúc của ứng dụng vidu
Trang 34Kết quả của việc tạo bộ khung ứng dụng ta có:
Trang 35Chương 4:
XÂY DỰNG ỨNG DỤNG BẰNG YII4.1 KHẢO SÁT HIỆN TRẠNG VÀ ĐÁNH GIÁ KHẢ THI:
4.1.1 Khảo sát quy trình tác nghiệp:
Đối tượng khảo sát: một số website kinh doanh điện thoại qua mạng như :
Phần 2 dành cho người quản trị hệ thống để quản lý sản phẩm,khách hàng,quản lý sản phẩm,thống kê sản phẩm,tiếp nhận ý kiến khách hàng…
4.1.2 Khảo sát yêu cầu của một số cửa hàng kinh doanh sản phẩm di động:
Sau khi tiến hành một số cuộc điều tra tại các cửa hàng điện thoại di động trên địa bàn Hà Nội em đã rút ra được các nội dung cơ bản sau:
KẾT QUẢ PHỎNG VẤN
1.Chủ cửa
hàng
Nhiệm vụ bán hàng
-Quản lý danh mục các sản phẩm,thông tin về sản phẩm,tin tức,thông tinkhuyến mại của cửa hàng, thông tinkhách hàng trên website
-Tiếp nhận và xử lý,xuất hóa đơn giaotới khách
Trang 36-Cập nhật và thêm mới -Giải đáp các thắc mắc, hỗ trợ trả lờitrực tuyến.
4.1.3 Khảo sát yêu cầu hệ thống:
a) Lưu trữ:
Thông tin về sản phẩm kinh doanh
Thông tin về nhà cung cấp
Trang 37Số điện thoại người nhận:………
Phương thức thanh toán:………
Người mua hàng
(ký,ghi rõ họ tên)
……… ………
Người giao hàng (Ký,ghi rõ họ tên)
……… ………
Chủ cửa hàng (Ký,ghi rõ họ tên)
……… ………
Yêu cầu:………
Trang 38Người giao hàng (Ký, họ tên)
Trang 394.2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG VỀ CHỨC NĂNG:
4.2.1 Xác định tác nhân ngoài và hồ sơ dữ liệu:
LIỆU
Sơ đồ ngữ cảnh của hệ thống:
Cửa hàng cần nắm được thông tin và tài khoản của khách hàng để làm hóađơn theo những thông tin này.Sau khi đặt hàng,khách hàng sẽ nhận sản phẩm và hóa đơn từ cửa hàng chuyển tới.Thông qua hệ thống khách hàng tìm kiếm sản phẩm hay tin tức
4.2.2 Nhóm chức năng quản lý công việc:
Hệ thống website bán điện thoại di
Trang 40CÁC CHỨC NĂNG GỘP CÁC CHỨC
NĂNG
GỘP CÁC CHỨC NĂNG
1.1 Xem thông tin thành viên
1.2 Kích hoạt tài khoản Quản lý thành viên
Quản trị hệ thống admin
1.2 Quản lý loại tin
1.3 Quản lý tin khuyến mại