11
Tìm hiểu về Zend I. Zend_Controller 1. Khái niệm Zend_Controller là lớp có chức năng nhận các yêu cầu từ client, sau đó gọi tới các phương thức của lớp tương ứng trong model, sau đó chuyển dữ liệu ra cho view để hiển thị ra màn hình. 2. Sử dụng Tạo các file controller trong thư mục Controller của ứng dụng, với 1 NameController tương ứng với 1 thư mục trong views/script có tên Name. Trong thư mục này lại bao gồm các file .phtml tương ứng với mỗi action có trong file Controller. Quy ước cách đặt tên file Controller là tenController .php. Mỗi controller này sẽ là 1 class, class này phải kế thừa từ class Zend_Controller_Action Ví dụ: <?php class IndexController extends Zend_Controller_Action 1

Zend Framework

Embed Size (px)

DESCRIPTION

Tài liệu Zend Framework

Citation preview

Page 1: Zend Framework

Tìm hi u v Zendể ề

I. Zend_Controller1. Khái ni mệ

Zend_Controller là l p có ch c năng nh n các yêu c u t client, sau đó g i t i ớ ứ ậ ầ ừ ọ ớcác ph ng th c c a l p t ng ng trong model, sau đó chuy n d li u ra ươ ứ ủ ớ ươ ứ ể ữ ệcho view đ hi n th ra màn hình.ể ể ị

2. S d ngử ụ

T o các file controller trong th m c Controller c a ng d ng, v i 1 ạ ư ụ ủ ứ ụ ớNameController t ng ng v i 1 th m c trong views/script có tên Name. ươ ứ ớ ư ụTrong th m c này l i bao g m các file .phtml t ng ng v i m i action có ư ụ ạ ồ ươ ứ ớ ỗtrong file Controller.

Quy c cách đ t tên file Controller là tenController .php. M i controller này ướ ặ ỗsẽ là 1 class, class này ph i k th a t class Zend_Controller_Actionả ế ừ ừ

Ví d :ụ

<?phpclass IndexController extends Zend_Controller_Action{ public function indexAction() { $this->view->assign('title', 'Hello, World!'); } }?>

1

Page 2: Zend Framework

II. Zend_View1. Khái ni mệ

Zend View có nhi m v hi n th thông tin ra màn hình cho ng i dùng. ệ ụ ể ị ườ

Trong controller c a zend framework khi chúng ta kh i t o m t action (hành ủ ở ạ ộđ ng). Thì t ng đ ng t i th m c ộ ươ ươ ạ ư ụviews/scripts/tên_controller/hành_đ ng.phtml.ộ

Ví d :ụ

N u là ế NewsController và addAction() thì chúng ta sẽ t o view theo c u ạ ấtrúc:

Views/scripts/news/add.phtml

Zend Framework sẽ t đ ng g i views c a action add khi ng i dùng tham ự ộ ọ ủ ườchi u t i action add qua đ ng d n. V y nh ng gì mà chúng ta trình bày ế ớ ườ ẫ ậ ữ ởview add.phtml sẽ hi n th cho ng i dùng th y khi h tham chi u t i action ể ị ườ ấ ọ ế ớadd.

T i các action c a controller mu n truy n bi n ra view ta vi t nh sau:ạ ủ ố ề ế ế ư

TH1: Truy n bi n là 1 xâuề ế : $this->view->ten_bien = “giá trị”

Ví dụ:Ta t o controller tên IndexController có n i dung nh sau:ạ ộ ư<?phpclass IndexController extends Zend_Controller_Action{   public function indexAction()    {             $this->view->s1= "DEMO ZEND VIEWS–VAdesign.vn";    }}T i th m c ạ ư ụ views/scripts/index ta t o file tên index.phtml v i n i dung:ạ ớ ộ<?php    echo "<h1>".$this->s1."</h1>";?>Và k t qu sẽ ra là:ế ả  DEMO ZEND VIEWS – VAdesign.vn

TH2: tr ng h p mu n truy n m t m ng sang viewườ ợ ố ề ộ ả

trong controller ta làm nh sau:ở ư

<?php class IndexController extends Zend_Controller_Action{

2

Page 3: Zend Framework

public function indexAction() { $data= array( 'title' => 'Zend Framework', 'author'=> 'Kenny', 'date' => '20-11-2009', 'website'=> 'www.QHOnline.Info' ); $this->view->info =$data; } }

view ta vi t nh sau:Ở ế ư

<?phpforeach($this->info as $k => $v){ echo "<b>$k</b>: $v<br />";}?>

Ngoài ra Zend_view h tr ng i dùng nh ng th vi n c u hình c b n ỗ ợ ườ ữ ư ệ ấ ơ ảtrong HTML nh ư <title>, <link>, <script

III. Zend_DB1. Khái ni mệ

Zend_Db là m t l p quan tr ng trong Zend Framework. Nó giúp chúng ta thaoộ ớ ọ tác v i database m t cách d dàng và linh ho t. Giúp ta có th k t n i v i ớ ộ ễ ạ ể ế ố ớnhi u h CSDL khác nhau.ề ệ

2. S d ngử ụi) Khai báo k t n i c s d li uế ố ơ ở ữ ệ

Ta khai báo k t n i c s d li u t i file ế ố ơ ở ữ ệ ạ application/configs/application.ini nh sau:ư

resources.db.adapter = "Pdo_mysql"resources.db.params.host = "localhost"resources.db.params.username = "root"resources.db.params.password = ""resources.db.params.dbname = "qhonline"

Dòng th 1 là khai báo lo i c s d li u. dòng th 2 là khai báo máy ch ứ ạ ơ ở ữ ệ ứ ủch a csdl. Dòng th 3 khai báo tên đăng nh p vào csdl. Dòng th 4 khai báo ứ ứ ậ ứm t kh u. dòng th 5 khai báo tên c a csdl.ậ ẩ ứ ủ

M file ở bootstrap.php thêm đo n code sau:ạ

3

Page 4: Zend Framework

<?phpclass Bootstrap extends Zend_Application_Bootstrap_Bootstrap{ protected function _initDatabase(){ $db = $this->getPluginResource('db')->getDbAdapter(); Zend_Registry::set('db', $db); }}  Ở đo n code trên, ta thêm vào ph ng th c initDatabase(). Đây là ph ng ạ ươ ứ ươth c sẽ đ c tri u g i khi ch y ng d ng. T i đây, ta l y thông tin k t n i t ứ ượ ệ ọ ạ ứ ụ ạ ấ ế ố ừn i dung đã c u hình file ộ ấ ở application.ini.

Gi s ta có 1 CSDL qu n lý ng i dùng. Đ thao tác v i d li u, ta t o file ả ử ả ườ ể ớ ữ ệ ạUser.php trong th m c Models nh sau:ư ụ ư

<?phpclass Model_User{ protected $db; public function __construct(){ $this->db=Zend_Registry::get('db'); } public function listall(){ $sql=$this->db->query("select * from user order by id DESC"); return $sql->fetchAll(); }}

Ph ng th c ươ ứ listall trong class Model_User có ch c năng li t kê toàn b ng iứ ệ ộ ườ dùng có trong b ng ả users.

Ti p t c, t i controller User ta g i model nh sau:ế ụ ạ ọ ư

<?phpclass UserController extends Zend_Controller_Action{ public function indexAction(){ $muser=new Model_User; $data=$muser->listall(); echo "<pre>"; print_r($data); echo "</pre>"; }}Đo n code trên g i model user và g i ti p ph ng th c ạ ọ ọ ế ươ ứ listall() c a model đ ủ ểhi n th thông tin c a ng i dùng b i các th <pre></pre> bên d i.ể ị ủ ườ ở ẻ ướ

IV. Zend_Auth1. Khái ni mệ

4

Page 5: Zend Framework

Zend Auth là m t l p cung c p cho chúng ta nhi u ph ng th c x lý giúp ộ ớ ấ ề ươ ứ ửchúng ta đ n gi n hóa th c hi n quá trình ch ng th c tài kho n có trong h ơ ả ự ệ ứ ự ả ệth ng ng d ng. Zend Auth h tr cho chúng ta trong quá trình đăng nh p, ố ứ ụ ỗ ợ ậthoát và l y các thông tin c n thi t c a tài kho n ng i s d ng đang đăng ấ ầ ế ủ ả ườ ử ụnh pậ

2. S d ngử ụ

Zend_Auth không riêng l mà k t h p các l p khác nhau nh Zend_Db_Table ẻ ế ợ ớ ưvà Zend_Session.

M t s ph ng th c c b n:ộ ố ươ ứ ơ ả

- getInstance() : Kh i t o Zend Authoở ạ

Ví d :ụ

$auth = Zend_Auth::getInstance ();

- Zend_Auth_Adapter_DbTable():K t n i table ch a d li uế ố ứ ữ ệ

Ví d :ụ

$authAdapter = new Zend_Auth_Adapter_DbTable($db);

$authAdapter->setTableName(‘user’)

->setIdentityColumn(‘UserName’)

->setCredentialColumn(‘Password’);

- setIdentity(): so sánh v i d li u t Formớ ữ ệ ừ

$authAdapter->setIdentity($uname);

$authAdapter->setCredential($paswd);

- authenticate($authAdapter) : L y k t qu truy v n trong databaseấ ế ả ấ

Ví d :ụ

$result = $auth->authenticate($authAdapter);

- isValid(): ki m tra k t qu truy v nể ế ả ấ

Ví d :ụ

$result->isValid()

5

Page 6: Zend Framework

- getResultRowObject(): l y d li u c n thi t trong b ng csdlấ ữ ệ ầ ế ả

$data = $authAdapter->getResultRowObject($returnColum,$omitColum)

Trong đó:

$returnColum: mãng ch a tên các c t c n l yứ ộ ầ ấ

$omitColum: mãng ch a tên các c t ko l yứ ộ ấ

- getStorage(): l y d li u đ l u vào sessionấ ữ ệ ể ư

ví d :ụ

$auth->getStorage()->write($data);

- hasIndentity(): ki m tra tài kho n đã ch ng th c hay ch aể ả ứ ự ư

Ví d : ụ $auth->hasIdentity()

- getIndetity(): l y tên tài kho nấ ả

$User=$auth->getIdentity()

- clearIndentity(): xoá ch ng th c tài kho nứ ự ả

$auth->clearIdentity();

V. Zend Filter1. Khái ni mệ

Là m t th vi n cung c p cho chúng ta nh ng l p đ chuy n đ i các ki u d ộ ư ệ ấ ứ ớ ể ể ổ ể ữli u v đúng đ nh d ng chúng ta mu n, ho c s d ng đ l y ra nh ng d ệ ề ị ạ ố ặ ử ụ ể ấ ữ ữli u c n thi t trong m t chu i ký t nào đó.ệ ầ ế ộ ỗ ự

2. S d ngử ụ

M t s ph ng th c thông d ng trong Zend_Filter:ộ ố ươ ứ ụ

- Zend_Filter_Alnum : lo i b nh ng ký t không ph i là alphabetic và ạ ỏ ữ ự ảnumber

Ví d :ụ

$str = 'asdasd \#$%@&*!)(&^^%#123jasd';

$filter = new Zend_Filter_Alnum();

6

Page 7: Zend Framework

$result = $filter->filter($str);

echo '<br>Source: ' . $str;

echo '<br>Filter: ' . $result;

- Zend_Filter_Alpha

Ví d :ụ

$str = 'asdasd \#$%@&*!)(&^^%#123jasd';

$filter = new Zend_Filter_Alpha();

$result = $filter->filter($str);

echo '<br>Source: ' . $str;

echo '<br>Filter: ' . $result;

- Zend_Filter_BaseName: l y tên t p tin t 1 đ ng d n:ấ ệ ừ ườ ẫ

Ví d :ụ

$str = 'http://framework.zend.com/manual/en/zend.filter.set.html';

$filter = new Zend_Filter_BaseName();

$result = $filter->filter($str);

echo '<br>Source: ' . $str;

echo '<br>Filter: ' . $result;

Zend_Filter_Dir: l y đ ng d n đ n th m cấ ườ ẫ ế ư ụ

Ví d :ụ

$str = 'http://framework.zend.com/manual/en/zend.filter.set.html';

$filter = new Zend_Filter_Dir();

$result = $filter->filter($str);

echo '<br>Source: ' . $str;

echo '<br>Filter: ' . $result;

7

Page 8: Zend Framework

- Zend_Filter_Callback

Ví d :ụ

$str = 'I love Zend Framework';

$filter = new Zend_Filter_Callback('strrev');

$result = $filter->filter($str);

echo '<br>Source: ' . $str;

echo '<br>Filter: ' . $result;

- Zend_Filter_Digits: l y ra s nguyên trong m t chu iấ ố ộ ỗ

Ví d :ụ

$str = '0123.12 đâsd';

$filter = new Zend_Filter_Digits();

$result = $filter->filter($str);

echo '<br>Source: ' . $str;

echo '<br>Filter: ' . $result;

VI. Zend Layout1. Khái ni mệ

Khi s d ngử ụ  layout, thì m i d li u c a view đ u sẽ hi n th trong vùng ch ọ ữ ệ ủ ể ể ị ỉđ nh c a layout đó mà chúng ta không c n ph i khai báo chúng trong t ng ị ủ ầ ả ừview m t. Nh v y, nói cách khác chúng ta sẽ không c n quan tâm đ n b c cộ ư ậ ầ ế ộ ụ c aủ  layout khi làm vi c v i view. Mà ch quan tâm đ n d li u, vai trò mà ệ ớ ỉ ế ữ ệview đó th hi n nh th nào mà thôi.ể ệ ư ế

2. S d ngử ụ

Khai báo s d ng layoutử ụ

Trong file application.ini ta thêm vào 2 dòng sau:

resources.layout.layout="layout"resources.layout.layoutPath=APPLICATION_PATH "/layouts/scripts"

8

Page 9: Zend Framework

Dòng đ u tiên khai báo tên c a file ch a layoutầ ủ ứ

Dòng th hai khai báo đ ng d n t i file layout.ứ ườ ẫ ớ

K t i, ta t o th m c ế ớ ạ ư ụ layouts/scripts. Và t o file ạ layout.phtml có n i dung:ộ

<?php echo $this->doctype() ?> <html> <head> <?php echo $this->headTitle() ?> <?php echo $this->headMeta() ?> <?php echo $this->headLink() ?> <?php echo $this->headScript() ?> </head> <body> <?php echo $this->layout()->content; ?> </body> </html>

Câu l nh “ệ echo $this->layout()->content” g i các view c a controller ọ ủvào đ hi n th trên b c c này.ể ể ị ố ụ

9