A- Tìm hiểu quy tắc hoạt động của Zend View
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:
Mã:
Views/scripts/news/add.phtml
Vậy để truyền tham số mà chúng ta thao tác ở controller cho view như thế nào ?.
Zend Framework cho phép người sử dụng truyền tham số thông qua phương thức:
PHP Code:
$this->view->tên_biến; Ví dụ ta tạo controller tên: IndexController.php với nội dung:
PHP Code:
<?php class IndexController extends Zend_Controller_Action {
public function indexAction(){
$this->view->string= "hello Zend Framework – QHOnline.Info";
}
}
PHP Code:
<?phpecho "<h1>".$this->string."</h1>";?>Như bạn thấy ta có thể truyền tham số và nhận tham số dễ dàng tại view với quy tắc ở trên phải không nào.
Trường hợp truyền một mảng thì có cách truyền như sau:
PHP Code:
<?php class IndexController extends Zend_Controller_Action{
public function indexAction() {
$data= array(
'title' => 'Zend Framework',
'author'=> 'Kenny',
'date' => '20-11-2009',
'website'=> 'www.QHOnline.Info'
);
$this->view->info =$data;
}
}
PHP Code:
<?phpforeach($this->info as $k => $v)
{
echo "<b>$k</b>: $v<br />";
}?>Kết quả: dữ liệu của mảng sẽ được hiển thị như mong đợi.
Trong trường hợp, chúng ta không muốn action phải gọi view thì tại action trong controller mà ta muốn, thêm vào phương thức sau:
PHP Code:
$this->getHelper('viewRenderer')->setNoRender(); B- Nạp 1 file khác trong view như thế nào ?
Để thực hiện việc nạp 1 file khác vào view trong zend framework. Chúng ta có thể gọi trong view thông qua phương thức:
PHP Code:
echo $this->render("Tên_file.phtml"); Ví dụ: Tạo action demo trong IndexController với nội dung như sau:
PHP Code:
<?phpclass IndexController extends Zend_Controller_Action{
function demoAction(){
$this->view->hello="Hello Zend Framework - QHOnline.Info";
}
}
PHP Code:
<?php
echo "<h1>".$this->hello."</h1>";
echo $this->render("qhonline.phtml");?>
HTML Code:
<h2>Khoa hoc PHP Online Version 2.0</h2>
Kết quả: dữ liệu trả về với nội dung như mong đợi.
C- Thiết lập thông tin cơ bản trong zend view:
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>,… Như vậy để sử dụng được chúng ta cần thiết lập chúng thông qua các controller và từ nó đổ tham số ra view.
a) Thiết lập chuẩn XHTML:
Cú pháp: doctype("Tham số")
Tham số chính là những chuẩn mà chúng ta mong muốn.
b) Thiết lập CSS:
Cú pháp: appendStylesheet(URL,Định dạng, Điều kiện)
Tương đương:
<link href="URL" media="??" />
c) Thiết lập thẻ Title:
Cú pháp: headtitle("Tieu de")
Tương đương:
<title> Tieu de </title>
d) Thiết lập thẻ Meta:
Cú pháp: appendName("keyword","Zend Framework,");
Trường hợp thêm description ta có:
offsetSetName("1","description","Khoa hoc PHP Framework tai QHOnline")
Tham số đầu là vị trí, tham số sau là tên description và tham số thứ 3 là thông tin.
e) Thiết lập thẻ script:
Cú pháp: appendFile(URL,"text/javascript")
Trường hợp nạp file js thứ 2
offsetSetFile("1","URL","text/javascript")
Ví dụ: Tạo testAction() trong controller index với nội dung:
PHP Code:
function testAction(){
$baseurl=$this->_request->getbaseurl();
$this->view->doctype();
$this->view->headtitle("QHOnline.Info - Chapter 3: Zend Framework");
$this->view->headMeta()->appendName("keyword","Zend Framework,Codeigniter,PHP Framework");
$this->view->headMeta()->offsetSetName("1","description","Khoa hoc PHP Framework tai QHOnline");
$this->view->headLink()->appendStylesheet($baseurl."/public/css/test.css");
$this->view->headscript()->appendFile($baseurl."/public/js/test.js","text/javascript");
$this->view->headscript()->offsetSetFile("1",$baseurl."/public/js/test2.js","text/javascrip
}
PHP Code:
<?php echo $this->doctype() ?>
<html>
<head>
<?php echo $this->headTitle() ?>
<?php echo $this->headMeta() ?>
<?php echo $this->headLink() ?>
<?php echo $this->headScript() ?>
</head>
<body onload="test()">
<div class="test">Hello Zend Framework – QHOnline.Info</div>
</body>
</html>Kết quả: Title, meta, Css và javascript sẽ có tác dụng
Như bạn thấy đấy, ở trong đoạn code trên testAction() ta sử dụng phương thức:
PHP Code:
$baseurl=$this->_request->getbaseurl(); Và với $baseurl ở trên thực chất là chúng ta sẽ lấy được thư mục hiện hành của ứng dụng là /zfexample. Và từ đó ta gọi tiếp các thông tin còn lại như css, js và hình ảnh hiển thị.
Không có nhận xét nào:
Đăng nhận xét