..
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
--------------------------------------Đinh Việt Bảo
XÂY DỰNG HỆ THỐNG CMS
DỰA TRÊN NỀN TẢNG ZEND FRAMEWORK
Chuyên ngành: Công nghệ thông tin
LUẬN VĂN THẠC SĨ KỸ THUẬT
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PSG. TS. Đặng Văn Chuyết
Hà Nội - 2016
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
Lời nói đầu
Ngày nay sự bùng nổ của ngành Cơng Nghệ Thơng Tin, tin học hố phát triển
rất mạnh và nhanh chóng, nó đã trở thành một trong những ngành khoa học mũi nhọn
của con người trong các tổ chức kinh tế, hành chính, đồn thể trong các xí nghiệp và
công ty.
Việc áp dụng những thành tựu của ngành Công Nghệ Thông Tin vào mọi lĩnh
vực của đời sống con người cũng ngày càng phát triển cả về chiều sâu lẫn chiều rộng,
nó đã làm giảm được rất nhiều khó khăn, đồng thời cũng nâng cao chất lượng và hiệu
quả của cơng việc, vì vậy một hệ thống với kiến trúc hợp lý đóng vai trị khơng nhỏ
trong sự thành cơng của dự án.
Trong thời gian tìm hiểu vừa qua, em nhận thấy rằng đề tài Xây dựng hệ thống
CMS là một đề tài hay, được rất nhiều người làm và quan tâm, có tính thực tế, ứng
dụng cao. Việc phát triển hệ thống này dựa trên nền tảng Zend Framework 2.0 sẽ giúp
cho việc xây dựng, thực hiện và triển khai hệ thống đạt hiệu quả tốt nhất. Đó chính là
lý do để em chọn đề tài này.
Trong báo cáo này em trình bày các nội dung như sau:
Chương 1: Tổng quan về hệ thống CMS.
Chương 2: Xây dựng hệ thống CMS.
Chương 3: Thiết kế giao diện chương trình.
Đinh Việt Bảo - 13BCNTT2
1
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
Mục lục
CHƯƠNG I. TỔNG QUAN VỀ HỆ THỐNG CMS ..............................................4
1. Khái niệm ............................................................................................................4
2. Lịch sử phát triển ................................................................................................4
3. Cấu trúc và chức năng của CMS .........................................................................6
4. Xây dựng hệ thống CMS.....................................................................................7
5. Giới thiệu Zend Framework ................................................................................9
5.1. Mơ hình MVC ..............................................................................................9
5.2. Tổng quan về Zend Framework .................................................................11
5.3. Các lớp phổ biến ........................................................................................13
5.4. Mơ hình MVC trong Zend Framework ......................................................14
CHƯƠNG II. XÂY DỰNG HỆ THỐNG CMS ....................................................18
1. Yêu cầu nghiệp vụ của hệ thống .......................................................................18
1.1. Quản lý tài khoản cá nhân ..........................................................................18
1.2. Quản lý nhóm người dùng .........................................................................18
1.3. Quản lý người dùng....................................................................................19
1.4. Quản lý controler .......................................................................................19
1.5. Quản lý action ............................................................................................19
1.6. Quản lý menu .............................................................................................20
1.7. Quản lý hệ thống ........................................................................................20
1.8. Quản lý chuyên mục ..................................................................................21
1.9. Quản lý loại bài viết ...................................................................................22
1.10. Quản lý tag bài viết ..................................................................................22
1.11. Quản lý bài viết ........................................................................................22
1.12. Quản lý comment .....................................................................................25
1.13. Quản lý like ..............................................................................................27
2. Mơ hình tình huống người dùng .......................................................................27
2.1. Quản trị hệ thống........................................................................................27
2.2. Phóng viên / Cộng tác viên ........................................................................37
2.3. Trưởng ban .................................................................................................41
2.4. Thư ký tòa soạn ..........................................................................................45
2.5. Tổng biên tập..............................................................................................49
2.6. Quản trị phản hồi........................................................................................53
2.7. Bạn đọc.......................................................................................................55
3. Biểu đồ tuần tự ..................................................................................................55
Đinh Việt Bảo - 13BCNTT2
2
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
3.1. Phóng viên / Cộng tác viên ........................................................................55
3.2. Trưởng ban .................................................................................................59
3.3. Thư ký tòa soạn ..........................................................................................61
3.4. Tổng biên tập..............................................................................................63
4. Thiết kế cơ sở dữ liệu ........................................................................................65
4.1. Mơ hình quan hệ ........................................................................................65
4.2. Danh sách các bảng ....................................................................................67
CHƯƠNG III. THIẾT KẾ GIAO DIỆN CHƯƠNG TRÌNH .............................74
1. Thiết kế trang Back-End ...................................................................................74
1.1. Trang đăng nhập.........................................................................................74
1.2. Trang danh sách bài viết ............................................................................76
1.3. Trang thêm bài viết ....................................................................................78
1.4. Trang chi tiết bài viết .................................................................................84
2. Thiết kế trang Front-End ...................................................................................86
2.1. Trang chủ ...................................................................................................86
2.2. Trang chuyên mục ......................................................................................88
2.3. Trang chi tiết bài viết .................................................................................90
KẾT LUẬN ..............................................................................................................92
TÀI LIỆU THAM KHẢO ......................................................................................93
Đinh Việt Bảo - 13BCNTT2
3
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
CHƯƠNG I
TỔNG QUAN VỀ HỆ THỐNG CMS
1. Khái niệm
CMS viết tắt của Content Management System nghĩa là hệ thống quản trị nội
dung. Là phần mềm để tổ chức và tạo mơi trường cộng tác thuận lợi nhằm mục đích
xây dựng một hệ thống tài liệu và các nội dung khác nhau một cách thống nhất. CMS
đã được áp dụng vào các chương trình quản lý nội dung Website, nó được dùng cho
các trang web của một cá nhân hay tổ chức nào đó.
CMS cung cấp những cơng cụ trực quan, đơn giản và thân thiện để người dùng
phổ không cần biết nhiều về CNTT cũng có thể sử dụng để quản lý nội dung, các hoạt
động của Website một cách dễ dàng.
2. Lịch sử phát triển
Trong giai đoạn đầu phát triển của Internet, việc xuất bản một bài viết đều cần
phải sửa mã nguồn trong các trang Web tĩnh dạng HTML. Cách thức để phát triể n,
vâ ̣n hành trang HTML đơn thuầ n giố ng như viê ̣c của 1 người in sách. Viế t nô ̣i dung
chỉ là 1 phầ n công viê ̣c, sau đó người ta phải cầ n tới giấ y và các máy in để in ra trang
sách, cuố i cùng là đóng các trang sách la ̣i thành 1 cuố n sách. Với cách thức làm việc
như vậy sẽ làm cho người dùng mệt mỏi và tốn rất nhiều thời gian, nế u người dùng
muố n có thêm 1 bài viế t mới, người dùng phải ta ̣o link tới bài viế t, phải viế t 1 trang
HTML hoàn chỉnh theo giao diê ̣n của Website, với những Website có khối lượng bài
viết lớn thì cách làm việc như vậy sẽ khơng thể thực hiện được, do đó, hệ quản trị nội
dung CMS ra đời.
CMS được xem như bước tiến dài trong lịch sử phát triển Internet. Nó đã làm
thay đổi cách quản lý và tiếp cận thông tin của người dùng, mà điều quan trọng là
người dùng không cần phải biết về HTML để có thể đưa bài báo đó lên web. Trước
kia, khi ta cần tìm một thơng tin nào đó, việc sử dụng những cách thức như tìm thơng
tin trên báo giấy, thông tin sổ sách... sẽ rất vất vả. Do đó, CMS được sử dụng khi mà
có quá nhiều thơng tin cần xử lý, nó giúp ta tối ưu cả về cơng sức và chi phí, đồng
Đinh Việt Bảo - 13BCNTT2
4
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
thời đem lại hiệu quả cao hơn rất nhiều. Tuy nhiên người quản trị cần phải biên tập
và sắp xếp nội dung một cách phù hợp nhất mới có thể tìm kiếm thơng tin một cách
dễ dàng.
Có thể nói CMS là xu hướng chung của tất cả các Website ngày nay. Blog là
một dạng CMS, Wiki là một dạng CMS… CMS trong tương lai sẽ được tích hợp vào
các hệ thống ERP của doanh nghiệp. Các dữ liệu của doanh nghiệp sẽ được xuất bản
trực tiếp lên Website mà không cần phải tốn nhiều cơng sức. Ví dụ một nhà máy, họ
vừa sản xuất ra một sản phẩm, sản phẩm này lập tức xuất hiện trên trang Web về
thương mại điện tử của nhà máy đó, thơng tin về sản phẩm sẽ được lấy từ dữ liệu của
phòng kỹ thuật, giá cả thì lấy từ phịng kinh doanh, các phương thức khuyến mãi lại
được truy cập trực tiếp từ phòng marketing. Các báo cáo thuế của doanh nghiệp sẽ
được xuất bản và gửi trực tiếp về phòng thuế… Một hệ thống CMS là một hệ thống
quản lý mọi thứ, bời vì tất cả đều là content. Cái hay của một hệ thống là làm sao tổ
chức và quản lý được những content phi cấu trúc và quản lý được nhiều loại thông
tin.
Các CMS thường đươ ̣c viế t bằng ngôn ngữ lâ ̣p trin
̀ h kịch bản nào đó, và quan
trọng hơn là không thể thiếu Cơ sơ dữ liệu. Hiê ̣n nay, CMS phổ biết được viết bằng
ngôn ngữ lập trình PHP và Cơ sở dữ liệu MySQL. Các loại CMS phổ biến gồm có:
W-CMS (Web CMS): Được sử dụng cho các trang tin tức, blog. Hỗ trợ
điều khiển và chỉnh sửa, biên tập nội dung. Nội dung bao gồm tập tin
điện tử, hình ảnh, video, file âm thanh, tài liệu điện tử và văn bản.
E-CMS (Enterprise CMS): Được sử dụng cho các doanh nghiệp để nắm
bắt, quản lý, lưu trữ, bảo quản và cung cấp nội dung và các tài liệu liên
quan.
T-CMS (Transactional CMS): Hỗ trợ việc quản lý các giao dịch thương
mại điện tử.
P-CMS (Publications CMS): Hỗ trợ việc quản lý các loại ấn phẩm trực
tuyến (sổ tay, sách, trợ giúp, tham khảo...).
Đinh Việt Bảo - 13BCNTT2
5
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
L-CMS/LCMS (Learning CMS): Hỗ trợ việc quản lý đào tạo dựa trên
nền Web.
BCMS (Billing CMS): Hỗ trợ việc quản lý Thu chi dựa trên nền Web.
3. Cấu trúc và chức năng của CMS
Hệ thống quản lý nội dung CMS chủ yếu được sử dụng để quản lý, xuất bản các
văn bản dựa trên các tài liệu như bài viết, tài liệu dạng văn bản và thông tin. Một
CMS thường có các chức năng cơ bản sau:
Tạo lập nội dung.
Lưu trữ nội dung.
Chỉnh sửa nội dung.
Truyền tải nội dung.
Chia sẻ nội dung.
Tìm kiếm nội dung.
Phân quyền người dùng và nội dung.
Đằng sau sự tiện lợi mà người dùng CMS sử dụng thì khơng thể khơng nhắc
đến sự phức tạp, khó khăn của người phát triển hệ thống khi xây dựng CMS. CMS
phát triển rất đa dạng, chiń h vì mu ̣c đić h sử du ̣ng của mỗi người dùng, mỗi tổ chức
là khác nhau, nên cũng có rấ t nhiề u các CMS khác nhau để phù hợp cho từng mục
đích riêng. Trên thực tế , tùy vào từng dự án, mô ̣t hoă ̣c mô ̣t vài thành phầ n có thể đươ ̣c
loa ̣i bỏ, rút go ̣n để phù hơ ̣p hơn với mu ̣c đích sử du ̣ng. Nhưng CMS tối thiểu cần phải
đáp ứng được các nhu cầu dưới đây:
Tiń h liên tu ̣c của thông tin.
Khả năng quản lý người dùng.
Khả năng quản lý truy câ ̣p.
Khả năng quản lý mở rô ̣ng chức năng.
Khả năng bảo mâ ̣t và báo lỗi.
Đinh Việt Bảo - 13BCNTT2
6
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
4. Xây dựng hệ thống CMS
Sự phát triển của Internet ngày nay giúp Website khơng cịn là khái niệm q
mơ hồ và xa lạ với người sử dụng máy tính. Người dùng máy tính hồn tồn có thể
tạo dựng cho riêng mình một Website chỉ bằng vài cú bấm chuột dựa trên những hệ
thống mã nguồn mở để hoạt động theo nhu cầu cá nhân, hoặc cao hơn nữa là dành
cho một tổ chức. Trong thời đại Công nghệ thông tin đang phát triển bùng nổ như
hiện nay, việc sử dụng hệ thống CMS để xây dựng Website là một nhu cầu thiết yếu
cho những cá nhân, công ty vừa và nhỏ trong và ngoài nước.
Trên thế giới hiện đã có những hệ thống CMS phổ biến như: Joomla, Wordpress,
Drupal, eZ Publish, OpenCMS, Magento..., tuy vậy những CMS này đều có ưu và
nhược điểm riêng, cụ thể như sau:
Wordpress:
Ưu điểm:
-
Cài đặt và cấu hình dễ dàng.
-
Hầu hết các plugin là miễn phí.
-
Hỗ trợ SEO khá tốt.
-
Kho giao diện có sẵn rất đa dạng và phong phú được cung cấp bởi
chính WordPress.
Nhược điểm:
-
Khi Website có lượng truy cập lớn, việc sử dụng các trường thông
tin mở rộng của bài viết sẽ làm cho hệ thống chạy chậm chạp và
tốn rất nhiều tài nguyên.
-
Chưa đáp ứng các yêu cầu mở rộng như sự tương tác giữa các
nhóm thành viên quản trị.
Joomla
Ưu điểm:
-
Cài đặt và cấu hình dễ dàng.
-
Thư viện các ứng dụng (extensions) rất lớn.
Nhược điểm:
Đinh Việt Bảo - 13BCNTT2
7
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
-
Mã nguồn của Joomla tương đối lớn dẫn tới tốn nhiều tài nguyên
hệ thống trong quá trình sử dụng.
-
Số lượng các ứng dụng (extensions) tuy nhiều nhưng một số lại
vướng phải lỗi bảo mật.
-
Không chạy tốt trên máy chủ Windows (IIS)
-
Khơng hỗ trợ SEO tốt.
Drupal
Ưu điểm:
-
Tính năng Multiple giúp người dùng có nhiều Website với chỉ 1
lần cài đặt duy nhất.
-
Thích hợp để xây dựng những Website lớn, số lượng người truy
cập nhiều.
Nhược điểm:
-
Giao diện chưa thân thiện.
-
Nhiều chức năng có độ phức tạp lớn, địi hỏi người dùng phải có
kiến thức CNTT.
Có thể thấy những CMS phổ biến trên đều là những hệ thống CMS lớn, có quá
nhiều chức năng, quá nhiều ứng dụng mở rộng (plugin hoặc extension) khiến người
dùng có thể gặp khó khăn khi quản trị. Chính vì vậy hệ thống CMS vừa và nhỏ có
những chức năng cần thiết có sẵn mà khơng cần phải cài ứng dụng mở rộng, giao diện
thân thiện, dễ sử dụng cần được ra đời, đáp ứng đủ cho một Website cung cấp nội
dung, thông tin.
Một hệ thống CMS bao gồm khá nhiều chức năng. Do đó, trong đề tài này em
chỉ đi sâu vào phân tích cụ thể các khâu về quản lý bài viết nghĩa là chỉ tập trung vào
phần quản lý nội dung chứ chưa thể phân tích về các chức năng khác như: “quản lý
tên miền, quản lý ngôn ngữ, quản lý giao diện, quản lý nhuận bút, lấy tin tự động...”.
Tóm lại, những chức năng: “quản lý nhóm người dùng, quản lý người dùng,
quản lý controler, quản lý action, quản lý menu, quản lý chuyên mục, quản lý loại bài
Đinh Việt Bảo - 13BCNTT2
8
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
viết, quản lý tag bài viết, quản lý bài viết, quản lý comment, quản lý like” sẽ là hướng
phát triển của em.
Về mặt phân tích và thiết kế hệ thống: kết quả thu được của đề tài từ các mơ
hình phân tích thiết kế hệ thống, cơ sở dữ liệu...
Về mặt lập trình: trên cơ sở nghiên cứu và áp dụng Zend Studio để viết ứng
dụng dựa trên nền tảng Zend Framework, hoàn thành các nội dung chủ yếu sau:
Hiểu và vận dụng thành công các lớp Zend Framework để xây dựng
thành công các chức năng cơ bản và cần thiết của một hệ thống CMS.
Đảm bảo hệ thống vận hành theo đúng cấu trúc của một ứng dụng Zend
Framework (theo mơ hình MVC).
Tối ưu hóa các lớp, sử dụng các lớp Zend Framework thay cho cách viết
thẻ HTML.
Đảm bảo sự độc lập của các chức năng, dễ dàng phát triển và nâng cấp
hệ thống.
Trang giao diện người dùng phải đúng chuẩn SEO để tối ưu tìm kiếm.
5. Giới thiệu Zend Framework
5.1. Mơ hình MVC
MVC (Model-View-Controller) là mẫu kiến trúc phần mềm. Khi sử đúng cách,
mẫu MVC giúp cho người phát triển phần mềm cô lập các nguyên tắc nghiệp vụ và
giao diện người dùng một cách rõ ràng hơn. Phần mềm phát triển theo mẫu MVC tạo
nhiều thuận lợi cho việc bảo trì vì các phần nghiệp vụ và giao diện ít liên quan đến
nhau.
Đinh Việt Bảo - 13BCNTT2
9
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
Hình 2.1. Mơ hình MVC
Model (Tầng dữ liệu): Là một đối tượng hoặc một tập hợp các đối tượng
biểu diễn cho phần dữ liệu của chương trình. Nó được giao nhiệm vụ
cung cấp dữ liệu cho cơ sở dữ liệu và lưu dữ liệu vào các kho chứa dữ
liệu. Tất cả các nghiệp vụ logic được thực thi ở Model. Dữ liệu vào từ
người dùng sẽ thông qua View đến Controller và được kiểm tra ở Model
trước khi lưu vào cơ sở dữ liệu. Việc truy xuất, xác nhận, và lưu dữ liệu
là một phần của Model.
View (Tầng giao diện): Là phần giao diện với người dùng, bao gồm việc
hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại,
chọn lựa..., để người dùng có thể thêm, xóa, sửa, tìm kiếm và làm các
thao tác khác đối với dữ liệu trong hệ thống. Thông thường, các thông
tin cần hiển thị được lấy từ thành phần Model.
Controller (Tầng điều khiển): Là phần điều khiển của ứng dụng, điều
hướng các nhiệm vụ (task) đến đúng phương thức (method) có chức năng
xử lý nhiệm vụ đó. Nó chịu trách nhiệm xử lý các tác động về mặt giao
Đinh Việt Bảo - 13BCNTT2
10
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
diện, các thao tác đối với Model, và cuối cùng là chọn một View thích
hợp để hiển thị ra màn hình.
Hình 2.2. Sơ đồ hoạt động của mơ hình MVC.
Ưu điểm và nhược điểm của MVC
Ưu điểm: Thể hiện tính chun nghiệp trong lập trình, phân tích thiết kế.
Do được chia thành các thành phần độc lập nên giúp phát triển ứng dụng
nhanh, đơn giản, dễ nâng cấp, bảo trì.
Nhược điểm: Đối với dự án nhỏ việc áp dụng mơ hình MC gây cồng
kềnh, tốn thời gian trong quá trình phát triển. Tốn thời gian trung chuyển
dữ liệu của các thành phần.
5.2. Tổng quan về Zend Framework
Zend Framework là một tập hợp các lớp, các thư viện lập trình viết bằng PHP
nhằm cung cấp một giao diện lập trình chuẩn cho các nhà phát triển ứng dụng. Ngồi
ra, Zend Framework cũng có nhiều tính năng thú vị như các cơng cụ mã hóa code,
một editor có thể kéo & thả dễ dàng sử dụng với sự hỗ trợ cho các công nghệ FrontEnd (HTML, CSS, JavaScript), debugging trực tuyến nhanh, các công cụ PHP Unit
Testing, và một Database Wizard giúp kết nối cơ sở dữ liệu. Zend Framework được
Đinh Việt Bảo - 13BCNTT2
11
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
tạo ra với các phương pháp Agile tạo điều kiện để cung cấp các ứng dụng chất lượng
cao.
Zend Framework là một PHP Framework mạnh mẽ và ổn định được đóng gói
với rất nhiều cấu hình tùy chọn vì thế nó rất tuyệt vời để sử dụng cho những dự án
phức tạp. Zend có các đối tác như IBM, Microsoft, Google và Adobe. Trong phiên
bản lớn phát hành sắp tới, Zend Framework 3 sẽ được tối ưu hóa cho PHP 7, nhưng
vẫn sẽ hỗ trợ PHP 5.5 trở đi.
Phiên bản hiện tại, Zend Framework 2 mà em sử dụng trong đề tài này là một
Framework mã nguồn mở để phát triển các ứng dụng Web và các dịch vụ sử dụng
được viết dựa trên ngơn ngữ lập trình phiên bản PHP 5.3 hoặc cao hơn.
Zend Framework 2 sử dụng mơ hình kiến trúc MVC và hoàn toàn viết theo kiểu
hướng đối tượng. Do được viết trên ngơn ngữ lập trình phiên bản PHP 5.3 hoặc cao
hơn nên Framework này hỗ trợ Namespace, Late Static Binding, hàm Lambda và
Closure.
5.2.1. Lý do chọn Zend Framework
Hiện nay có rất nhiều loại PHP Framework như: Laravel, Symfony,
CodeIgniter, Yii... Hầu hết các PHP Framework đều có các điểm yếu và thế mạnh
khác nhau, ví dụ Zend Framework đã được phổ biến từ phiên bản 1.3 và có đầy đủ
các tính năng mạnh mẽ, cộng thêm một cộng đồng phát triển rộng lớn. Theo thống kê
trên trang chủ Zend Framework, tính đến thời điểm hiện tại, phiên bản Zend
Framework 2 đã có tới 15 triệu lượt tải về. Ngược lại, Laravel, Symfony, CodeIgniter,
Yii... lại là 1 loại PHP Framework khác, ra đời muộn hơn so với Zend Framework,
do đó những PHP Framework này ít cộng đồng phát triển hỗ trợ hơn Zend
Framework, nhưng nó vẫn có người lựa chọn vì tính thân thiện với người dùng và dễ
sử dụng.
5.2.2. Ưu điểm và nhược điểm của Zend Framework
Ưu điểm
Zend Framework được viết theo kiểu OOP nên nó thừa hưởng các thế
mạnh của kiểu viết này. Các lớp của Zend Framework được BA
Đinh Việt Bảo - 13BCNTT2
12
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
(Business Analysis) rất chuẩn và khi cần mở rộng có thể dùng thể dùng
tính chất thừa kế của OOP. Nói chung là chúng ta không phải chỉnh sửa
core của Zend Framework.
Hầu như các phiên bản mới của Zend Framework ko có nhiều thay đổi
trong core nên ta có thể dễ dàng update.
Zend Framework tích hợp được gần như tất cả các thư viện PHP và các
CMS khác để sử dụng. Ví dụ: Smarty, Pear, FCKEditer, Drupal...
Cách viết của Zend Framework rất thân thiện và đơn giản. Tích hợp
những cơng nghệ mới nhất của lập trình web như: JSON, Search,
Syndication, Web Services...
Zend Framework được sử dụng trong các dự án lớn và có kế hoạch phát
triển dài lâu.
Nhược điểm:
Mất nhiều thời gian để tìm hiểu về thư viện đồ sộ của Zend Framework
Một số lớp chưa ổn định, có sự thay đổi, gây khó khăn cho người sử dụng
khi cập nhật các phiên bản.
5.3. Các lớp phổ biến
Zend_Config: giúp chúng ta cấu hình ứng dụng, ví dụ như: cấu hình thơng tin
kết nối cơ sở dữ liệu, cấu hình tên miền, email...
Zend_Acl: giúp chúng ta phân quyền cho ứng dụng chi tiết trên từng action,
controller và module.
Zend_Auth: sử dụng để xác thực tài khoản của người dùng khi đăng nhập vào
hệ thống.
Zend_Crypt: sử dụng để mã hóa một chuỗi, thường dùng cho các trường hợp
mã hóa mật khẩu để lưu vào trong cơ sở dữ liệu.
Zend_Db: dựa trên đối tuợng PDO (PHP Data Objects), cung cấp các thức kết
nối đến các loại cơ sở dữ liệu (MySQL, SQL Server, Couchbase...).
Zend_Controller: giúp lấy các Request từ phía Client và thực thi nó bằng các
Action.
Đinh Việt Bảo - 13BCNTT2
13
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
Zend_View: chính là tầng View trong mơ hình MVC, giúp chúng ta hiển thị
những kết quả trong xử lý từ Controller và Models ra bên ngồi.
Zend_Router: cấu hình url của ứng dụng.
Zend_Paginator: giúp phân trang dữ liệu khi hệ thống có số lượng bản ghi
lớn.
Zend_Cache: giúp cho các ứng dụng Web tăng tốc độ tải dữ liệu, giúp cho hệ
thống không phải sử dụng CPU hoặc truy xuất vào cơ sở dữ liệu quá nhiều.
Zend_Currency: dùng để xử lý, hiển thị định dạng liên quan đến tiền tệ.
Zend_Date: xử lý tất cả các vấn đề liên quan thời gian.
Zend_Mail: hỗ trợ sử dụng các giao thức gửi, nhận email.
Zend_Feed: xử lý với Rss và Atom feeds .
Zend_File: cung cấp, hỗ trợ mở rộng việc Upload và Download của các tập
tin. Nó gắn liền với kiểm tra các chức năng của tập tin.
Zend_Form: đơn giản hóa việc tạo form và xử lý các ứng dụng trên Website.
Zend_Filters: lọc dữ liệu trước khi thực hiện một quá trình xử lý nào đó.
Zend_Validate: dùng để kiểm tra dữ liệu nhập vào có phù hợp với u cầu
hay khơng.
Zend_Pdf: sử dụng để tạo và xử lý các file PDF, lớp này thường được dùng
cho các chức năng liên quan đến báo cáo.
Zend_Search: là một lớp cung cấp cho chúng ta các phương thức search trên
nội dung của các tập tin lưu trữ thông tin.
Zend_Translate: là giải pháp cho các ứng dụng đa ngơn ngữ.
5.4. Mơ hình MVC trong Zend Framework
Zend Framework 2 được xây dựng theo mơ hình MVC, do đó nó tuân thủ chặt
chẽ những nguyên tắc mà mơ hình MVC mang lại.
Model: cung cấp tập hợp các lớp được trừu tượng hóa sử dụng cho việc truy
xuất dữ liệu. Lớp phục vụ: Zend_DB, Zend_DB_Table.
Đinh Việt Bảo - 13BCNTT2
14
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
View: định nghĩa các thơng tin hiển thị phía người dụng sau khi được xử lý và
trả về từ controller. Lớp phục vụ: Zend_View.
Controller: kiểm soát dữ liệu vào ra. Xuất thông tin ra tầng View khi được thực
thi. Lớp phục vụ: Zend_Controller.
Boostrap: index.php
Controller: Zend_Controller
(Xử lý nghiệp vụ logic)
Model: Zend_DB, Zend_DB_Table
(Truy vấn cơ sở dữ liệu)
View: Zend_View
(Hiển thị giao diện: HTML,
JSON, XML...)
Hình 2.3. Mơ hình MVC trong Zend Framework.
Cấu trúc thư mục của ứng dụng Zend Framework 2:
Để hỗ trợ các lập trình viên có thể dễ dàng tiếp cận - xây dựng nhanh chóng các
ứng dụng Web, nhà phát triển Zend Framework cho ra đời bộ khung gọi là
ZendSkeletonApplication. Nó được xây dựng theo mơ hình MVC mà thư viện Zend
Framework 2 cung cấp và là nơi chứa toàn bộ thư viện Zend Framework 2, các
modules mở rộng, các tập tin cấu hình để khởi tạo một ứng dụng.
Những thư mục và tập tin quan trọng có trong bộ dự án mẫu (khung)
ZendSkeletonApplication:
config/
--- autoload/
--- application.config.php
data
module
--- ModuleName
------ config
------ language
------ src
--------- ModuleName
------------ Controller
------------ Form
------------ Model
------ view
Đinh Việt Bảo - 13BCNTT2
15
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
public
vendor
config: là nơi chứa những cấu hình của tồn bộ ứng dụng đang xây dựng;
nó bao gồm tập tin cấu hình application.config.php nơi khai báo các
module sẽ được sử dụng, các thiết lập cấu hình cho tồn bộ ứng dụng…
và một thư mục autoload là những tập tin cấu hình tự động được load vào
ứng dụng có đi mở rộng (*.local.php hoặc *.global.php). Những tập
tin cấu hình có đi mở rộng là (*.local.php) sẽ bị bỏ qua khi commit dự
án lên Git, nên những thông tin nhạy cảm như tài khoản kết nối cơ sở dữ
liệu cũng thường được đặt vào trong các tập tin này.
data: thư mục chứa những dữ liệu được cached từ database, hoặc cache
những tồn bộ cấu hình của ứng dụng.
module: nơi chứa những module mở rộng, mỗi lập trình viên đều có thể
xây dựng những module mới dành riêng cho ứng dụng của mình, và cũng
có thể đặt những module mở rộng đã được phát triển từ địa chỉ:
nhằm giúp xây dựng ứng dụng một
cách nhanh chóng và hiệu quả nhất.
public: là nơi những tập tin như css, js, font, hình ảnh... để hỗ trợ cho
việc hiển thị Website trên trình duyệt, nó chứa những tài ngun cơng
khai và dễ dàng truy nhập.
vendor: nơi chứa bộ thư viện Zend Framework 2 và những module mở
rộng khác. Có thể đặt module mở rộng ở cả trong 2 thư mực module hoặc
vendor.
ZendSkeletonApplication cung cấp một module mẫu là Application, đây là
module với các thành phần cơ bản nhất của Zend Framework. Trong module này bao
gồm các thư mục và file sau:
config: là thư mục chứa tập tin cấu hình của module: module.config.php.
Các tập tin cấu hình của tất cả các module được khởi động chạy trong
Đinh Việt Bảo - 13BCNTT2
16
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
ứng dụng sẽ được ghép thành một cấu hình chung để sử dụng trong quá
trình khởi tạo và chạy ứng dụng.
language : là thư mục chứa các tập tin ngôn ngữ, khi ứng dụng cần dùng
cho nhiều người dùng ở các quốc gia khác nhau, sử dụng ngôn ngữ khác
nhau… Đây là một phần không thể thiếu khi phát triển một dự án hỗ trợ
đa ngôn ngữ.
src: là nơi chứa mã nguồn phát triển của module. Lập trình viên có thể
viết các lớp xử lý Controller, Model, View, Form… và sử dụng chúng ở
bất cứ đâu trong module hoặc trong các module khác.
view: là nơi chứa phần hiển thị tương ứng với các controller - action,
những mã html được viết trong các tập tin (*.phtml) tương ứng với từng
action. Nó cịn gồm những trang thơng báo lỗi 404 hoặc exception để hỗ
trợ lập trình viên có thể kiểm soát và sửa lỗi.
Module.php: là một tập tin khơng thể thiếu trong mỗi module, nó là một
lớp cùng tên dành riêng cho từng module. Khi ứng dụng bước tới giai
đoạn load các module, Module.php của từng module sẽ được khởi tạo và
nó giúp trả về các cấu hình cài đặt để sử dụng khi ứng dụng chạy.
Đinh Việt Bảo - 13BCNTT2
17
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
CHƯƠNG II
XÂY DỰNG HỆ THỐNG CMS
1. Yêu cầu nghiệp vụ của hệ thống
1.1. Quản lý tài khoản cá nhân
1.1.1. Thông tin cá nhân
Chức năng cho phép người quản trị cập nhật thông tin cá nhân như: họ tên, email, ảnh đại diện... tương ứng với tài khoản mà họ đang đăng nhập hệ thống CMS.
1.1.2. Thay đổi mật khẩu
Chức năng cho phép người quản trị cập nhật mật khẩu của tài khoản mà họ đang
đăng nhập hệ thống CMS.
1.1.3. Lịch sử hoạt động
Chức năng cho phép người quản trị xem các hoạt động trong hệ thống của tài
khoản mà họ đang đăng nhập hệ thống CMS.
1.1.4. Đăng xuất
Chức năng cho phép người quản trị đăng xuất khỏi hệ thống CMS.
1.2. Quản lý nhóm người dùng
1.2.1. Thêm nhóm người dùng
Chức năng cho phép người quản trị thêm nhóm người dùng.
1.2.2. Danh sách nhóm người dùng
Chức năng cho phép người quản trị xem được danh sách nhóm người dùng đã
có trong hệ thống, sau đó người quản trị có thể xem chi tiết thơng tin của từng nhóm
hiển thị ở danh sách nhóm hoặc cập nhật thơng tin nhóm: thêm người dùng vào nhóm,
phân quyền cho nhóm.
Chức năng cịn cho phép người quản trị tìm kiếm nhóm người dùng theo một
hoặc nhiều ký tự xuất hiện trong tên nhóm. Sau khi tìm kiếm xong hệ thống sẽ hiển
thị danh sách nhóm người dùng để người quản trị có thể xem hoặc cập nhật thơng tin
của một nhóm bất kỳ.
Đinh Việt Bảo - 13BCNTT2
18
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
1.3. Quản lý người dùng
1.3.1. Thêm người dùng
Chức năng cho phép người quản trị thêm người dùng.
1.3.2. Danh sách người dùng
Chức năng cho phép người quản trị xem danh sách người dùng đã có trong hệ
thống. Người quản trị có thể chọn bất kỳ người dùng nào từ danh sách để cập nhật
các thơng tin của người dùng đó.
Chức năng cịn cho phép người quản trị tìm kiếm người dùng đã có trong hệ
thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thông tin người dùng. Sau
khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách người dùng, người quản trị sẽ
chọn từng người dùng bất kỳ để cập nhật thông tin người dùng đó nếu muốn.
1.4. Quản lý controler
1.4.1. Thêm controller
Chức năng cho phép người quản trị thêm các controller mới vào hệ thống (các
controller này được phát triển trên nền tảng Zend Framework 2.0 dựa theo chuẩn mơ
hình MVC). Việc này nhằm đáp ứng ứng yêu cầu về tính mở của hệ thống.
1.4.2. Danh sách controller
Chức năng cho phép người quản trị xem danh sách controller đã có trong hệ
thống, người quản trị có thể chọn một controller từ danh sách và cập nhật thơng tin
của các controller đó.
Chức năng cịn cho phép người quản trị tìm kiếm các controller theo bất cứ ký
tự xuất hiện trong controller, sau khi tìm kiếm xong, hệ thống sẽ hiển thị danh sách
controller để người quản trị có thể cập nhật thơng tin của một controller bất kỳ nếu
muốn.
1.5. Quản lý action
1.5.1. Thêm action
Chức năng cho phép người quản trị thêm các action mới vào hệ thống (các action
này được phát triển trên nền tảng Zend Framework 2.0 dựa theo chuẩn mơ hình
MVC). Việc này nhằm đáp ứng ứng yêu cầu về tính mở của hệ thống.
Đinh Việt Bảo - 13BCNTT2
19
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
1.5.2. Danh sách action
Chức năng cho phép người quản trị xem danh sách action đã có trong hệ thống,
người quản trị có thể chọn một action từ danh sách và cập nhật thơng tin của các
action đó.
Chức năng cịn cho phép người quản trị tìm kiếm các action theo bất cứ ký tự
xuất hiện trong action, sau khi tìm kiếm xong, hệ thống sẽ hiển thị danh sách action
để người quản trị có thể cập nhật thơng tin của một action bất kỳ nếu muốn.
1.6. Quản lý menu
1.6.1. Thêm menu
Chức năng cho phép người quản trị thêm menu. Mỗi menu gồm các thông tin
sau:
- Menu cha
- Tên menu
- Tên hiển thị
- Link
- Action: Tên action mà menu đó thuộc về
1.6.2. Danh sách menu
Chức năng cho phép người quản trị xem danh sách menu đã có trong hệ thống.
Người quản trị có thể chọn bất kỳ menu nào từ danh sách để cập nhật các thơng tin
của menu đó.
Chức năng cịn cho phép người quản trị tìm kiếm menu đã có trong hệ thống
theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thơng tin menu. Sau khi tìm kiếm,
hệ thống sẽ hiển thị kết quả là danh sách menu, người quản trị sẽ chọn từng menu bất
kỳ để cập nhật thơng tin menu đó nếu muốn.
1.7. Quản lý hệ thống
1.7.1. Cấu hình hệ thống
Chức năng cho phép người quản trị cập nhật các thơng tin cấu hình để sử dụng
giá trị của tham số cấu hình đó trong tồn hệ thống với các mục đích khác nhau.
Đinh Việt Bảo - 13BCNTT2
20
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
1.7.2. Thống kê truy cập
Chức năng cho phép người quản trị thống kê truy cập hệ thống phía Front-End,
Tất cả nguồn dữ liệu thống kê được lấy từ Google Analytic.
1.7.3. Thống kê comment
Chức năng cho phép người quản trị thống kê các bài viết được comment nhiều
nhất trong một khoảng thời gian nào đó do người quản trị chọn.
1.7.4. Thống kê like
Chức năng cho phép người quản trị thống kê các bài viết được like nhiều nhất
trong một khoảng thời gian nào đó do người quản trị chọn.
1.7.5. Xem logging
Chức năng cho phép người quản trị xem được log các hành động mà chính mình
cũng như các thành viên khác thực hiện trong hệ thống. Các log được chia làm 3 loại:
- Info: Các log dạng thông báo.
- Error: Các log thông báo lỗi.
- System: Các thao tác của người dùng đã thực hiện trong hệ thống.
1.8. Quản lý chuyên mục
1.8.1. Thêm chuyên mục
Chức năng cho phép người quản trị thêm chuyên mục.
1.8.2. Danh sách chuyên mục
Chức năng cho phép người quản trị xem danh sách chuyên mục đã có trong hệ
thống. Người quản trị có thể chọn bất kỳ chuyên mục nào từ danh sách để cập nhật
các thông tin của chun mục đó.
Chức năng cịn cho phép người quản trị tìm kiếm chun mục đã có trong hệ
thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thơng tin chun mục. Sau
khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách chuyên mục, người quản trị sẽ
chọn từng chuyên mục bất kỳ để cập nhật thơng tin chun mục đó nếu muốn.
Đinh Việt Bảo - 13BCNTT2
21
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
1.9. Quản lý loại bài viết
1.9.1. Thêm loại bài viết
Chức năng cho phép người quản trị thêm loại bài viết.
1.9.2. Danh sách loại bài viết
Chức năng cho phép người quản trị xem danh sách loại bài viết đã có trong hệ
thống. Người quản trị có thể chọn bất kỳ loại bài viết nào từ danh sách để cập nhật
các thông tin của loại bài viết đó.
Chức năng cịn cho phép người quản trị tìm kiếm loại bài viết đã có trong hệ
thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thơng tin loại bài viết. Sau
khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách loại bài viết, người quản trị sẽ
chọn từng loại bài viết bất kỳ để cập nhật thông tin loại bài viết đó nếu muốn.
1.10. Quản lý tag bài viết
1.10.1. Thêm tag bài viết
Chức năng cho phép người quản trị thêm tag bài viết.
1.10.2. Danh sách tag bài viết
Chức năng cho phép người quản trị xem danh sách tag bài viết đã có trong hệ
thống. Người quản trị có thể chọn bất kỳ tag bài viết nào từ danh sách để cập nhật các
thơng tin của tag bài viết đó.
Chức năng cịn cho phép người quản trị tìm kiếm tag bài viết đã có trong hệ
thống theo tiêu chí: một hoặc nhiều ký tự xuất hiện trong thông tin tag bài viết. Sau
khi tìm kiếm, hệ thống sẽ hiển thị kết quả là danh sách tag bài viết, người quản trị sẽ
chọn từng tag bài viết bất kỳ để cập nhật thơng tin tag bài viết đó nếu muốn.
1.11. Quản lý bài viết
Chức năng cho phép các phóng viên, cộng tác viên, trưởng ban, thư ký toà
soạn và tổng biên tập có thể đưa bài viết, biên tập và xuất bản bài viết đúng quy
trình chung của các tịa soạn báo diện tử theo quy định và phê duyệt từ Bộ thông tin
và truyền thông.
Đinh Việt Bảo - 13BCNTT2
22
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
Tổng biên tập
Quy trình nghiệp vụ xuất bản bài viết
Thử ký tịa soạn
Xuất bản bài viết
IF OK
True
True
Sốt lỗi bài viết
IF OK
Gửi tổng biên tập
False
Trưởng ban
False
Gửi thư ký tòa soạn
Biên tập bài viết
True
IF OK
False
Phóng viên | Cộng tác viên
False
Gửi trưởng ban
Tạo mới bài viết
False
False
Hình 3.1. Quy trình nghiệp vụ xuất bản bài viết.
Ngồi ra chức năng cho phép cách tìm các bài viết trong hệ thống theo các tiêu
chí sau:
- Theo ký tự xuất hiện trong tiêu đề, trích dẫn hoặc nội dung.
- Theo trạng thái bài viết.
- Theo chuyên mục của bài viết.
- Thao tag bài viết.
- Theo ngày xuất bản: từ ngày... đến ngày...
Đinh Việt Bảo - 13BCNTT2
23
Xây dựng hệ thống CMS dựa trên nền tảng Zend Framework
Kết quả tìm kiếm sẽ hiển thị danh sách tìm kiếm gồm các thông tin: số thứ tự,
trạng thái, ngày xuất bản, tiêu đề, tác giả.
1.11.1. Thêm bài viết
Chức năng cho phép người quản trị cập nhật bài viết, các thông tin liên quan
đến bài viết gồm:
(a) Thông tin chung.
(b) Nội dung bài viết.
(c) Thông tin xuất bản:
- Ngày giờ xuất bản: Mặc định là ngày giờ hiện tại trong hệ thống, nếu là ngày
giờ lớn hơn ngày giờ hiện tại thì hệ thống sẽ xuất bản bài viết vào ngày giờ đó.
- Ghi chú: Là nội dung ghi chú về thao tác của người quản trị với bài viết (Hạ
xuống, trả về trình bày sốt lỗi, trả về biên tập...).
- Chuyên mục: Là chuyên mục mà bài viết sẽ xuất bản vào đó, hệ thống cho
phép bài viết xuất bản đồng thời vào nhiều chuyên mục.
1.11.2. Danh sách bài viết cá nhân
- Danh sách bài viết của tôi: Chức năng cho phép người quản trị xem các bài
viết mà mình đã đưa lên hệ thống.
- Danh sách bài viết lưu tạm: Cho phép người quản trị xem các bài viết của mình
đã đưa lên hệ thống ở trạng thái lưu tạm.
- Danh sách bài viết chờ biên tập: Cho phép người quản trị xem các bài viết của
mình đã đưa lên hệ thống để chờ biên tập.
- Danh sách bài viết chờ soát lỗi: Cho phép người quản trị xem các bài viết của
mình đã đưa lên hệ thống để chờ soát lỗi.
- Danh sách bài viết chờ xuất bản: Cho phép người quản trị xem các bài viết của
mình đã đưa lên hệ thống để chờ xuất bản.
- Danh sách bài viết đã xuất bản: Cho phép người quản trị xem các bài viết của
mình đã đưa lên hệ thống và đã xuất bản.
- Danh sách bài viết bị trả lại: Cho phép người quản trị xem các bài viết của
mình đã đưa lên hệ thống và bị trả lại.
Đinh Việt Bảo - 13BCNTT2
24