Upload
chung-bao-nguyen
View
139
Download
2
Embed Size (px)
DESCRIPTION
Tài liệu Zend Framework
Citation preview
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
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
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
<?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
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
- 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
$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
- 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
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