Hướng dẫn sử dụng Zend Framework

Contents

I. Cài đặt ứng dụng đầu tiên. 4

II. Hướng dẫn sử dụng Zend Framework . 7

1. Tạo Controller sử dụng Zend Controller . 9

Zend_Controller_Router_Route class . 11

Request Object . 14

Zend Controller Error . 15

2. Views, Forms,Filters, and Validators . 18

Views . 18

Làm việc với biến trong view . 26

Vòng lặp trong view . 30

Câu lệnh if else . 32

Escaping User Input . 34

Tạo Forms sử dụng Zend_Form . 39

Thêm các phần tử vào form . 41

Formatting Form . 44

Processing the Form . 46

Thêm phần xác nhận và lọc dữ liệu . 50

Creating Form Element Objects . 54

Tạo Textarea Fields . 55

Tạo Password Fields . 60

Tạo Radio Buttons . 60

Tạo Check Boxes . 60

File Uploading . 65

Tạo CAPTCHA . 69

3. Database Communication, Manipulation, and Display . 72

Kết nối với Database . 72

Và khi gọi các ham của Zend_DB với phương thức ví dụ $this->select() . 74

Thêm dữ liệu . 74

Sử dụng SQL . 74

Không sử dụng lệnh SQL . 76

Database Expressions . 78

Escaping Values . 79

SQL Injection . 79

Escaping User Data. 79

Last Inserted ID . 81

LoundBite Sign-up page . 82

LoudBite Add Artist . 84

Hướng đối tượng với câu lệnh SELECT . 86

Querying Specific Columns . 87

Thực thi truy vấn . 88

Creating Column and Table Aliases . 88

Điều kiện với WHERE . 89

Truy vấn 2 hay nhiều bảng với câu lệnh JOIN . 91

Limiting and Order the Result Set . 93

Database Expressions . 95

Phân trang . 97

Sử dụng Zend_Paginator . 97

Adding Control to the Paginator . 100

Phân trang bản ghi cơ sở dữ liệu . 103

Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db_Table . 104

Zend Framework: Tương tác cơ sở dữ liệu với Zend_Db . 108

Zend Framework: Hướng dẫn sử dụng layout trong ứng dụng . 110

Zend Framework: Hướng dẫn cấu hình ứng dụng theo mô hình module . 112

Zend Framework: Tìm hiểu cơ bản về Zend_Form . 114

pdf118 trang | Chuyên mục: PHP | Chia sẻ: dkS00TYs | Lượt xem: 3234 | Lượt tải: 1download
Tóm tắt nội dung Hướng dẫn sử dụng Zend Framework, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
; 
Vậy hằng APPLICATION_PATH cũng chúng ta đã thay đổi và trỏ đường dẫn tới thư mục application. 
Tiếp tục ta cấu hình cho ứng dụng tìm tới được thư mục library. 
set_include_path(APPLICATION_PATH . '/../library'); 
Bạn hiểu thế nào về đoạn cấu hình này ?. Vì hằng APPLICATION_PATH ở trên đã có thể tìm thấy được thư mục 
application. Cho nên từ thư mục ấy ta back trở ra để tìm tới thư mục library. Vì thế trước library ta có dùng 
"/../library" là vì vậy. 
Vậy file index.php củng chúng ta sau khi chỉnh sửa sẽ như sau: 
01 <?php 
02 define('APPLICATION_PATH', 
03 realpath(dirname(__FILE__) . '/application')); 
04 define('APPLICATION_ENV','production'); 
05 set_include_path(APPLICATION_PATH . '/../library'); 
06 require_once 'Zend/Application.php' ; 
07 $application = new Zend_Application( 
08 APPLICATION_ENV, 
09 APPLICATION_PATH . '/configs/application.ini' 
10 ); 
11 $application->bootstrap()->run(); 
Tiếp tục ta tạo file index.phtml trong từng thư mục views của từng module. 
www/zf2/application/modules/default/views/scripts/index/index.phtml 
1 Hello Zend Framework – Default Module 
www/zf2/application/modules/admin/views/scripts/index/index.phtml 
1 Hello Zend Framework – Admin Module 
Chạy thử ứng dụng xem nào: 
Bị lỗi rồi phải không nào ?. Ứng dụng bị lỗi là vì chúng ta vẫn chưa cấu hình để tìm thấy được thư mục module. 
Vì thế, để giải quyết. Tả mở file application.ini trong thư mục configs ra và thêm vào 2 dòng sau: 
1 resources.frontController.moduleDirectory=APPLICATION_PATH "/modules" 
2 resources.modules="" 
Dòng ở trên làm gì vậy ?. Câu trả lời nó chỉ ra đường dẫn tới thư mục modules của chúng ta. Và dòng thứ 2 chỉ 
ra ta đang gọi cơ chế module autoload. Khi đó các class, model, form,… sẽ được tự động nạp vào từng module 
của chúng ta. 
Chạy xem lại xem nào. 
Kết quả sẽ như thế này đây 
Hình ảnh cấu trúc multi Module trong Zend Framework (file .htaccess không hiển thị trong mô hình cây này). 
Download mã nguồn của bài học tại đây 
Zend Framework: Tìm hiểu cơ bản về Zend_Form 
Ở bài trước, tôi đã hướng dẫn các bạn tìm hiểu về Zend_Paginator. Qua đó sử 
dụng chúng để thực hiện phân trang cho ứng dụng. Tiếp theo bài này, chúng ta sẽ 
cùng tìm hiểu về Zend_Form. Một trong những lớp khá tiện dụng trong Zend 
Frameworknhằm thực hiện tạo ra các thành phần tương tác trong một form dữ liệu. 
Để thao tác được với zend form. Trước hết, ta tạo một thư mục forms trong application và trong thư mục này ta 
tạo file User.php với nội dung như sau: 
01 <?php 
02 class Form_User extends Zend_Form{ 
03 public function init(){ 
04 $this->setAction('')->setMethod('post'); 
05 $name=$this->createElement("text","name",array( 
06 "label" => "Full Name", 
07 "size" => "30", 
08 )); 
09 $email=$this->createElement("text","email",array( 
10 "label" => "Email", 
11 "size" => "30", 
12 )); 
13 $gender=$this->createElement("radio","gender",array( 
14 "label" => "Gender", 
15 "multioptions"=> array( 
16 "1" => "Male", 
17 "2" => "Female", 
18 ) 
19 )); 
20 $country=$this->createElement("select","country",array( 
21 "label" => "Country", 
22 "multioptions"=> array( 
23 "1" => "VietNam", 
24 "2" => "Cambodia", 
25 "3" => "Thai Lan", 
26 ) 
27 )); 
28 $note=$this->createElement("textarea","note",array( 
29 "label" => "Note", 
30 "cols" => "30", 
31 "rows" => "5", 
32 )); 
33 $submit=$this->createElement("submit","submit"); 
34 $this->addElements( 
35 array($name,$email,$gender,$country,$note,$submit) 
36 ); 
37 } 
38 } 
Ở đoạn code trên ta tạo ra lớp tên Form_User tức là chỉ ra đường dẫn từ thư mục forms tới file user.php. Tại lớp 
này ta lại có phương thức init(). Đây là phương thức sẽ được gọi trước tiên khi chúng ta khởi tạo lớp 
Form_User. 
Vì lớp Form_User của chúng ta kế thừa lớp Zend_Form nên trong lớp này chúng ta có thể sử dụng từ khóa 
$this để gọi các phương thức của lớp Zend_Form. 
Tại đây ta khai báo action và method bằng phương thức setAction() và setMethod(). Kế tới ta tạo các thành phần 
trong form như text, radio, select, textarea, submit. Bởi phương thức: 
1 $this->createElement("Thành_Phần","Tên","Thuộc tính thêm") 
+ Thành phần là: text, radio, select, textarea, checkbox, submit. 
+ Tên là tên của form mà bạn muốn gán vào. 
+ Thuộc tính thêm là những phần tử ta muốn thêm vào như label, size, cols, rows,… 
Riêng với thành phần radio, select ta dùng thêm multioptions để biểu diễn các giá trị của chúng bên trong form. 
Sau cùng ta dùng phương thức 
1 $this->addElements($Mảng các phần tử) 
Để thêm chúng vào trong ứng dụng. 
Giống với phần làm việc với zend_db_table vậy, để zend framework có thể hiểu được lớp Form_User. Chúng 
ta phải cấu hình trong file bootstrap.php của thư mục application thông tin như sau: 
01 <?php 
02 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{ 
03 protected function _initAutoload(){ 
04 $autoloader = new Zend_Application_Module_Autoloader(array( 
05 'namespace' => '', 
06 'basePath' => dirname(__FILE__), 
07 )); 
08 return $autoloader; 
09 } 
10 } 
Sau khi đã hoàn tất file cấu hình này. Kế tới ta mở file UserController.php trong thư mục application/controllers 
và thêm vào nội dung gọi form như sau: 
1 <?php 
2 class UserController extends Zend_Controller_Action{ 
3 public function indexAction() 
4 { 
5 $form=new Form_User; 
6 $this->view->form=$form; 
7 } 
8 } 
Vì ta đã truyền các thành phần của form ở trên vào view form. Do vậy, ta cần xuất các thành phần này trong view 
để hiển thị cho người dùng thấy. 
Mở file index.phtml theo đường dẫn views/scripts/user/ và đưa vào đoạn lệnh bên dưới: 
1 <?php 
2 echo $this->form; 
3 ?> 
Chạy ứng dụng: 
Và kết quả sẽ hiển thị: 
Bạn thấy đấy, zend form cho ta kết quả như mong đợi. Tuy nhiên, Zend Form cũng tích hợp sẵn một số đặc 
điểm khi thể hiện form. Như khái niệm về các thẻ , xuất hiện trong HTML 5 cũng được đưa vào sử 
dụng. Vậy làm thế nào để có thể tùy biến các thẻ trong zend form dễ dàng nào ?. 
Muốn tùy biến trong zend form, ta sử dụng thêm một khái niệm nữa là decorator trong zend form. Phương thức 
này cho phép ta thêm thắt và thay đổi các định dạng của thành phần trong form theo cách của riêng ta. 
Vậy trước khi ta thực hiện việc addElements ta cần khai báo như sau: 
1 $this->setDecorators(array( 
2 array('viewScript', 
3 array('viewScript'=>'Form_Register.phtml'), 
4 ))); 
Vì ở trên ta có khai báo cho các phần tử đều tồn tại một label. Và chúng được bọc trong cặp thẻ . Để xóa bỏ 
nó, ta cần bỏ các dòng khai báo label ở trên của các phần tử. 
Tiếp tục ta thêm vào đoạn code sau để xóa bỏ các thẻ và bọc lấy các phần tử form. 
01 $name->removeDecorator('HtmlTag') 
02 ->removeDecorator('Label'); 
03 $email->removeDecorator('HtmlTag') 
04 ->removeDecorator('Label'); 
05 $gender->removeDecorator('HtmlTag') 
06 ->removeDecorator('Label'); 
07 $country->removeDecorator('HtmlTag') 
08 ->removeDecorator('Label'); 
09 $note->removeDecorator('HtmlTag') 
10 ->removeDecorator('Label'); 
11 $submit->removeDecorator('DtDdWrapper'); 
Phương thức removeDecorator('HtmlTag') cho phép ta xóa bỏ cặp thẻ trong các phần tử khi chúng phát 
sinh. 
Phương thức removeDecorator('Label') cho phép ta xóa bỏ thẻ . Vì mặc dù ta đã xóa bỏ label ở phía trên 
nhưng khi hiển thị thì cặp thẻ vẫn chưa mất hoàn toàn. Do vậy cần có thêm phương thức này để xóa bỏ 
hoàn toàn thẻ . 
Riêng ở nút submit thì do không có thẻ nên để định dạng nó ta phải sử dụng phương 
thức:removeDecorator('DtDdWrapper'); 
Sau khi đã khai báo và cấu hình xong. Kế tới ta tạo file Form_Register.phtml tại thư mục views/scripts với nội 
dung: 
01 element->getAction(); ?>' 
02 method= 'element->getMethod(); ?>'> 
03 Your Name: 
04 element->name; ?> 
05 
06 Your Email: 
07 element->email; ?> 
08 
09 Your Gender: 
10 element->gender; ?> 
11 
12 Your Country: 
13 element->country; ?> 
14 
15 Your Note: 
16 element->note; ?> 
17 
18 element->submit; ?> 
19 
20 
Đây là trang đưa các thành phân trong form ra bên ngoài. Tại đây để lấy thông tin action hoặc method, ta dùng 
các phương thức như getAction(), getMethod(),…Và để lấy các thành phân khái trong form ta dùng $this-
>element->Tên mà ta đã khai báo trong lớp tạo form. 
Cuối cùng chạy lại ứng dụng:  
Kết quả như ta mong đợi phải không nào. 
Để lấy dữ liệu hoặc kiểm tra thông tin từ form tại UserController.php ta sửa indexAction() như sau: 
01 <?php 
02 class UserController extends Zend_Controller_Action{ 
03 public function indexAction(){ 
04 $form=new Form_User; 
05 if($this->_request->isPost()){ 
06 $name=$this->_request->getPost('name'); 
07 //Lấy các tham số còn lại 
08 } 
09 $this->view->form=$form; 
10 } 
11 } 
Để kiểm tra xem người sử dụng có truyền dữ liệu từ form hay không ?. Ta dùng phương thức: 
1 $this->_request->isPost() 
Và để lấy giá trị từ form ta dùng phương thức: 
1 $this->_request->getPost('name') 
Tải toàn bộ mã nguồn của bài học tại đây. 
Như vậy, ở phần này. Tôi đã hướng dẫn các bạn tìm hiểu quy trình làm việc trên zend form. Qua đó áp dụng nó 
để xây dựng mẫu biểu tương tác người dùng cho ứng dụng. Thực tế thì chúng ta không nhất thiết phải sử dụng 
zend form. Có khi chỉ cần dùng HTML thuần trong view thì cũng đã tạo được form rồi. Nhưng lợi thế của việc sử 
dụng zend_form được thể hiện rõ ở phần validation, filter, captcha…Nghĩa là chúng ta sử dụng zend form kết 
hợp với vấn đề kiểm tra tính hợp lệ trên dữ liệu dựa vào các lớp được xây dựng sẵn của zend framework. 
Tiếp tục ở bài kế tới, chúng ta sẽ tìm hiểu cách sử dụng zend_validation trong zend form như thế nào. Qua đó 
ta hoàn toàn có thể xây dựng những mẫu biểu tương tác với người dùng một cách dễ dàng. 
(Bùi Quốc Huy) 

File đính kèm:

  • pdfHướng dẫn sử dụng zend framework.pdf
Tài liệu liên quan