Kiến trúc MVC của Zend framework như đã trình bày ở phần trên nên không có gì là khó hiểu với kiến trúc thư mục vừa tạo,đều cần lưu ý là trong ứng dụng này tách biệt thành 2 modules riêng đó là admin và default modules với Controllers,Views và layout riêng biệt vì vậy chúng ta cần phải chỉ cho front Controller biết được Controller của chúng ở đâu. có 2 cách để làm việc này :
Cấu trúc tổ chức của website bán hàng mỹ nghệ
UpAnh.com Kiến trúc MVC của Zend framework như đã trình bày ở phần trên nên không có gì là khó hiểu với kiến trúc thư mục vừa tạo,đều cần lưu ý là trong ứng dụng này tách biệt thành 2 modules riêng đó là admin và default modules với Controllers,Views và layout riêng biệt vì vậy chúng ta cần phải chỉ cho front Controller biết được Controller của chúng ở đâu. có 2 cách để làm việc này : cách 1 : Thêm Controller Directory cho Zend_Controller_Front // cài đặt controller CODE
Cách 2 : Hoặc Nạp Thêm module cho fontcontroller CODE
Một điểm cần lưu ý nữa là bạn phải đặt thư viện zend vào trong thư mục library.Thư viện My của chúng ta chứa các thành phần như Session,Controller,view,Plugin,Form,.. là các lớp kế thừa từ các lớp trong Zend, nhằm xây dựng lại các lớp này cho phù hợp với ứng dụng của ta hơn.Có thể gọi thư mục My là một framework riêng của chúng ta đã xây dựng bằng cách bằng cách kế thừa từ zf. Sau đó tạo một file bootstrap có tên là index.php đặt vào thư mục gốc của website (folder : eshop) và một file cấu hình để kết nối database có tên config.ini trong folder application. Như đã trình bày ở trên file bootstrap sẽ “đón đầu” tất cả các request, sau đó khởi tạo controller và dispatch request đến controller tương ứng. Để làm dược điều này bạn cần phải tạo file .htaccess trong thư mục eshop. File .htaccess với nội dung sau : CODE
Với câu lệnh này, file .htaccess sẽ kiểm tra những Request URL nào không kết thúc với các đuôi trên thì sẽ được chuyển lại về trang index.php. Và trang index.php sẽ thực hiện chức năng bootstrap của mình . Cụ thể file Bootstrap sẽ chứa nội dung để thực hiện các chức năng như: 1. Cho phép hiện Lỗi khi có bất kỳ sự cố nào CODE
2. Thêm thư mục /library/ và /models vào include path để có thể truy xuất tới các lớp trong Zend Framework và map đến các lớp trong models. CODE
3. Gọi Autoloader để gọi các lớp một cách tự động, Không phải mỗi đầu file phải include hay require class cần dùng. CODE
4. Kết nối đến cơ sở dữ liệu//gán file cấu hình database (config.ini) vào biến config CODE
5. Khởi tạo và đăng ký session CODE
6. Tạo bộ nhớ đệm cache// tạo cache CODE
7. Thiết lập đối tượng Zend view CODE
8. Khởi Tạo đối tượng Front Controller CODE
9. Đăng ký plugin để cài đặt layout cho modules admin và default và đăng ký plugin phân quyền truy cập CODE
10. Dispatch front Controller để quản lý các request của người dùng CODE
Như vậy bạn đã bước đầu xây dựng thành công khung sườn cho ứng dụng của chúng ta.Bây giờ Chúng ta cần phân tích các sự kiện (Action) và nhóm các sự kiện (action) phù hợp này thành các controller tương ứng để xây dựng ứng dụng. Việc tạo các lớp controller này được đặt trong thư mục Controllers.yêu cầu là mổi action trong controller này đi kèm với một file định dạng.phtml thực hiện chức năng hiển thị của view trong mô hình kiến trúc MVC: Views/Scripts/[controller name]/[Action name].phtml. 2.3.2. Zend_Controller 2.3.2.1. Cơ sở lý thuyết Zend_Controller được xem là thành phần Controller trong kiến trúc MVC của Zend framework. Controller này sẽ nhận xữ lý tất cả các truy vấn từ website.Tất cả yêu cầu này đều bị chặn bởi front controllervà chuyển chúng đến một Actions Controller riêng biệt dựa vào địa chỉ ( Url ) đã yêu cầu.Như đã được đề cập ở phần trên Zend Framework sử dụng đối tượng Front Controller để quản lý các Request được gởi đến Web server. Và dựa trên Request đó, nó sẽ gọi các lớp xử lý Model và trả về kết quả trình bày với các lớp View. Đối tượng Front Controller sẽ lấy và xử lý các yêu cầu Request từ người dùng bằng một member function (gọi là Action) trong một class Controller tương ứng với yêu cầu Request từ người dùng (được đặt trong thư mục Application/ControllershoặcApplication/Module/[ModuleName]/Controllers) Ví dụ : file IndexController và các member function (action) như sau : CODE
Lớp IndexController với các Action là member function: addAction(), editAction(), deleteAction(),indexAction(). Zend Frameworks tổ chức mỗi page trong một ứng dụng website là một action. Và các action được nhóm lại thành một trong controller Ví dụ : với URL : http://localhost/eshop/cart/transport thì Cart là Controller và transport là Action. Qui cách đặt tên : - Class Controller : đặt tên {Tên controller}Controller. Tên controller phải bắt đầu bằng chữ cái IN HOA và các chữ sau viết thường. Ví dụ : IndexController , NewsController,… - Các hàm action trong Class : đặt tên {action name}Action. Tên action phải viết thường toàn bộ. Ví dụ : addAction(),editAction(). Qui định, Zend Framework sẽ xem: - index là action mặc định. Do đó, khi gọi URL dạng : http://localhost/eshop/cart/thì action index sẽ được gọi. - Tương tự với Controller, IndexController được xem là Controller mặc định. - Với URL http://localhost/eshop thì action index của IndexControllersẽ được gọi . 2.3.2.2. Sử dụng Zend_Controller trong website bán hàng mỹ nghệ Zend_controller là cốt lổi của Zend framework.Cho nên sử dụng Zend_Controller trong ứng dụng này là điều tất yếu.Để sử dụng Zend Controller bạn phải cài đặt Zend Controller trong file bootstrap như đã trình bày ở trên. Căn cứ vào các chức năng và yêu cầu của ứng dụng,website bán hàng mỹ nghệ đã tạo các Controller như sau: Trong module Admin: - IndexController - FaqController - HoadonController - SanPhamController, - ThitruongController, - UserController - LoaihangController - NhomhangController - khachhangController, - TintucController . Trong module default : - FaqController - UserController - IndexController - CartController - NewsController - MarketController XétUserController, đây là controller xử lý các sự kiện của user như đăng ký,đăng nhập,thoát,hiển thị và cập nhật thông tin user. Mỗi sự kiện này được tổ chức thành một action trong UserController. Vì vậy lớp UserController có các action chính : loginAction,logoutAction,registerAction,displayprofileAction,updateAction. CODE
Khi người dùng muốn đăng ký khách hàng thì ta chỉ việc link đến action register của UserController này bằng địa chỉ : http://localhost/myweb/user/register Khi đó hàm registerAction được gọi và kết quả xứ lý trả về cho View (views/script/user/register.phtml) hiển thị lên trình duyệt .. 2.3.1. Zend_Config Zend_Config được thiết kế để làm đơn giản hóa quá trình truy cập, sử dụng và cấu hình dữ liệu trong ứng dụng.Nó cung cấp một đối tượng cơ sở để truy cập vàocấu hình dữ liệu.Hiện thời thì Zend_Config cung cấp adapters cho cấu hình dữ liệu được lưu trữ trong file Inivà XML bằng Zend_Config_Ini và Zend_Confg_XML tương ứng .Ta có thể sử dụng Zend_Config_Ini hoặc Zend_Config_XML để lấy cấu hình dữ liệu nhưng nếu trong trường hợp cấu hình dữ liệu đã được lưu trữ trong mãng thì một cách đơn giản khác là ta sử dụng Zend_Config gọi Constructor của nó như đoạn mã sau: CODE
2.3.1.1.1. Zend_Config_IniTa có thể khai báo cấu hình dữ liệu trong file theo định dạng Ini như khai báo sau : ; Cấu hình site eshop CODE
Sau đó dùng Zend_Config_Ini để nạp file cấu hình này vào biến $config như đoạn mã sau : < ?php require_once 'Zend/Config/Ini.php'; $config = new Zend_Config_Ini('/path/to/config.ini', 'news'); /* echo $config->database->params->host; // prints “dev.eshop.com” echo $config->database->params->dbname; // prints “dbname” */ 2.3.1.1.2. Zend_Config_XML Ngoài ra ta có thể khai báo cấu hình dữ liệu trong file theo định dạng XML như khai báo sau : Tương tự khi sử dụng Zend_Config_Ini,ta sử dụng câu lệnh sau đê nạp cấu hình trên vào biến $config. CODE
2.3.1.2. Sử dụng thành phần Zend_Config trong website bán hàng mỹ nghệ Website bán hàng mỹ nghệ sử dụng hệ quản trị cơ sở dữ liệu MySQL. Đặt tên database là eshop. Tạo file cấu hình bằng định dạng Ini có có tên config.ini đặt vào thư mục Application vơi nội dung như sau: CODE
Sau đó tạo kết nối đến cơ sở dữ liệu trong file bootstrap: index.php CODE
Đến lúc này bạn đã hoàn toàn kết nối thành công đến cơ sở dữ liệu của chúng ta.Và việc đăng ký thành công đối tượng $db sẽ giúp chúng ta dễ dàng sử dụng đối tượng $db mổi lúc cần đến bằng dòng lênh:$db=Zend_Registry::get(’db’); Điều dễ dàng nhận ra là nó rất thuận lợi cho chúng ta mổi khi thao tác trên database,và không cần phải viết lại cả đoạn code trên khi cần thao tác trên cơ sở dữ liệu. |
Thêm vào trang Google +
Số lần xem : 8244
Đánh giá