Hướng dẫn cài đặt zend framework tren hosting

Mục tiêu: Mô tả kết quả điều trị trượt đốt sống thắt lưng bằng phẫu thuật ít xâm lấn giải ép, ghép xương liên thân đốt qua lỗ liên hợp. Đối tượng và phương pháp: Nghiên cứu mô tả chùm ca bệnh 51 trường hợp bệnh nhân trượt đốt sống thắt lưng đơn tầng được phẫu thuật ít xâm lấn giải ép, ghép xương liên thân đốt qua lỗ liên hợp tại khoa Phẫu thuật cột sống, Bệnh viện Hữu nghị Việt Đức từ 01/2019 - 12/2020. Kết quả: 51 bệnh nhân [11 nam, 40 nữ], tuổi trung bình là 47,9 ± 12,9 [từ 15 đến 72] đã được phẫu thuật ít xâm lấn giải ép, ghép xương liên thân đốt qua lỗ liên hợp. Kết quả xa sau mổ được đánh giá theo tiêu chuẩn MacNab tại thời điểm 12 tháng sau mổ 44/51 bệnh nhân khám lại [86,3%]: rất tốt: 28 [63,6%], tốt: 14 [31,8%], khá: 2 [4,6%], xấu: 0 [0,0%]. Đánh giá cải thiện triệu chứng lâm sàng sau mổ tại thời điểm khám lại cuối cùng: điểm đau lưng VAS [Visual Analogue Scale] trước mổ 6,22 ± 1,06, sau mổ 12 tháng 1,89 ± 1,50, điểm đau chân VAS trước mổ 5,90 ± 1,40, sau mổ 12 tháng 1,25 ± ...

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

` $frontController = Zend_Controller_Front::getInstance[]; $frontController->throwExceptions[true];

//Nạp Controller cho 2 modules admin và default $frontController->addControllerDirectory[’./application/modules/admin/controllers’, ‘admin’]; $frontController->addControllerDirectory[’./application/modules/default/controllers’, ‘default’]; `

Cách 2 : Hoặc Nạp Thêm module cho fontcontroller

CODE

$frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’];

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

RewriteEngine on RewriteRule !.[js|ico|gif|jpg|png|css]$ index.php

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

< ?php error_reporting[E_ALL|E_STRICT]; ini_set['display_errors', 1]; date_default_timezone_set['Europe/London'];

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

set_include_path[ get_include_path[] . PATH_SEPARATOR . ‘./library’ . PATH_SEPARATOR . ‘./application’ . PATH_SEPARATOR . ‘./application/models’ ];

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

//load class với zf version 1.8 require_once ‘Zend/Loader/Autoloader.php’; $loader = Zend_Loader_Autoloader::getInstance[]; $loader->setFallbackAutoloader[true]; $loader->suppressNotFoundWarnings[false];

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

` $config = new Zend_Config_Ini[’./application/config.ini’, ‘general’]; //db tạo mảng cấu hình kết nối cơ sở dữ liệu $params = array[ ‘host’ => $config->database->host, ‘username’ => $config->database->username, ‘password’ => $config->database->password, ‘dbname’ => $config->database->name ]; //kết nối cơ sở dữ liệu gán vào đối tượng $db . $db = Zend_Db::factory[$config->database->type, $params]; $db->query[”SET NAMES ‘utf8′”];

// tạo adapter mặc định bằng Zend_Db_Table //Zend_Db_Table_Abstract::setDefaultAdapter[$db]; Zend_Db_Table::setDefaultAdapter[$db]; `

5. Khởi tạo và đăng ký session

CODE

//đăng ký và khởi tạo session Zend_Session::start[]; //đăng ký session mặc định $defSession = new Zend_Session_Namespace[’Default’, true]; Zend_Registry::set[’defSession’, $defSession]; //đăng ký session cho giỏ hàng $cart=new Zend_Session_Namespace[’cart’]; Zend_Registry::set[’cart’,$cart];

6. Tạo bộ nhớ đệm cache// tạo cache

CODE

`

$frontendOptions = array[’lifetime’ => $config->cache->maxLifetime, ‘automatic_serialization’ => true]; $backendOptions = array[’cache_dir’ => $config->cache->dir]; $cache = Zend_Cache::factory[’Core’, ‘File’, $frontendOptions, $backendOptions]; `

7. Thiết lập đối tượng Zend view

CODE

//thiết lập Zend view $view = new Zend_View[array[’encoding’=>’UTF-8′]]; $view->addHelperPath[’My/View/Helper’, ‘My_View_Helper_’]; $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer[$view]; $viewRenderer->setView[$view]; Zend_Controller_Action_HelperBroker::addHelper[$viewRenderer];

8. Khởi Tạo đối tượng Front Controller

CODE

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `0

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

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `1

10. Dispatch front Controller để quản lý các request của người dùng

CODE

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `2

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

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `3

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 : //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 : //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 //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

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `4

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ỉ : //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

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `5

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

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `6

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

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `7

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

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `8

Sau đó tạo kết nối đến cơ sở dữ liệu trong file bootstrap: index.php

CODE

` $frontController->addModuleDirectory[’application/modules’]; $frontController->setDefaultModule[’default’]; `9

Đế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 : 7931

Đánh giá

Chủ Đề