HANDSOMEROOT
Bài 08: MVC PHP - Viết thư viện load view
- Nhận đường liên kết
- X
- Ứng dụng khác
Vậy là chúng ta đã viết được các lớp load library, load helper, load config rồi nhỉ, vậy thì trong bài này chúng ta sẽ viết thư viện load view. Đây là một thư viện khá là quan trọng và trong đối tượng này có sử dụng một số hàm có thể hơi mới lạ nên nếu hàm nào không hiểu thì bạn comment hoặc google để tra nhé.
Như thường lệ mình sẽ đăng cấu trúc file và folder tính đến cuối bài này như sau.
Trước tiên ta cần tìm hiểu định nghĩa về View và một số thông tin quan trọng liên quan đến view trong project MVC PHP của chúng ta.
1. View là gì?
View là một thành phần trong mô hình MVC và nhiệm vụ của nó là lấy dữ liệu từ controller và in ra các đoạn mã HTML, mỗi
action
thông thường sẽ có một view
tương ứng. Ví dụ bạn có action
news_detail
thì bạn sẽ có một view news_detail
.
Trong serie này mình chỉ hướng dẫn cách viết thư viện load view đơn giản nên nếu sau này bạn thấy không hay thì có thể bổ sung thêm, chủ yếu là bạn đang học và bạn cần một ví dụ cụ thể để xem chứ không nên lấy ví dụ đó để làm project cho riêng mình.
Trong project MVC PHP này các file view sẽ được đặt trong thư mục
admin/view
, trong đó admin là tên module hiện tại.2. Viết thư viện view loader
Bạn tạo một file
FT_View_Loader.php
nằm trong thư mục system/core/loader
và copy nội dung sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| <?php /** * @package FT_Framework * @author Freetuts Dev Team * @email freetuts.net@gmail.com * @copyright Copyright (c) 2015 * @since Version 1.0 * @filesource system/core/loader/FT_View_Loader.php */ class FT_View_Loader { /** * @desc biến lưu trữ các view đã load */ private $__content = array (); /** * Load view * * @param string * @param array * @desc hàm load view, tham số truyền vào là tên của view và dữ liệu truyền qua view */ public function load( $view , $data = array ()) { // Chuyển mảng dữ liệu thành từng biến extract( $data ); // Chuyển nội dung view thành biến thay vì in ra bằng cách dùng ab_start() ob_start(); require_once PATH_APPLICATION . '/view/' . $view . '.php' ; $content = ob_get_contents(); ob_end_clean(); // Gán nội dung vào danh sách view đã load $this ->__content[] = $content ; } /** * Show view * * @desc Hàm hiển thị toàn bộ view đã load, được dùng ở controller */ public function show() { foreach ( $this ->__content as $html ){ echo $html ; } } } |
Ở đây mình có hai phương thức chính là:
load()
dùng để load view bạn cần load. Nó có hai tham số là tênview
vàdata
màcontroller
muốn truyền qua view.show()
dùng để hiển thị view, hàm này sẽ được gọi ở cuốicontroller
3. Thêm view loader vào FT_Controller
Như thường lệ để sử dụng được thư viện view loader thì ban phải khởi tạo nó trong
FT_Controller
.
Bạn mở file
FT_Controller.php
lên và tìm đến hàm khởi tạo bổ sung đoạn code sau vào cuối hàm:
1
2
3
| // Load View require_once PATH_SYSTEM . '/core/loader/FT_View_Loader.php' ; $this ->view = new FT_View_Loader(); |
Và đây là toàn bộ code cho hàm khởi tạo cho tới thời điểm này.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| public function __construct() { // Loader cho config require_once PATH_SYSTEM . '/core/loader/FT_Config_Loader.php' ; $this ->config = new FT_Config_Loader(); $this ->config->load( 'config' ); // Loader Library require_once PATH_SYSTEM . '/core/loader/FT_Library_Loader.php' ; $this ->library = new FT_Library_Loader(); // Load Helper require_once PATH_SYSTEM . '/core/loader/FT_Helper_Loader.php' ; $this ->helper = new FT_Helper_Loader(); // Load View require_once PATH_SYSTEM . '/core/loader/FT_View_Loader.php' ; $this ->view = new FT_View_Loader(); } |
Ok như vậy là xong rồi đấy.
4. Tạo mới một view
Bạn tạo một file tên là
view.php
nằm trong thư mục admin/view
, sau đó copy nội dung sau vào:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| <!DOCTYPE html> < html > < head > < title ></ title > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" > < style > #header{ height: 150px; background: red; } #footer{ height: 150px; background: blue; } #content{ height: 150px; background: yellow; } </ style > </ head > < body > < div id = "header" > HEADER </ div > < div id = "content" > CONTENT </ div > < div id = "footer" > FOOTER </ div > </ body > </ html > |
Vậy là bạn đã tạo xong một view rồi đấy, bây giờ ta sẽ load view này trong controller nhé
5. Load view trong Controller
Bạn tạo mới một controller tên là
View_Controller
và copy nội dung sau vào:
1
2
3
4
5
6
7
8
9
10
11
12
13
| <?php if ( ! defined( 'PATH_SYSTEM' )) die ( 'Bad requested!' ); class View_Controller extends FT_Controller { public function indexAction() { // Load view $this ->view->load( 'view' ); // Show view $this ->view->show(); } } |
Ok bây giờ bạn ra trình duyệt gõ URL http://localhost/mvc/admin.php?c=view bạn sẽ thấy xuất hiện một giao diện nhu sau tức là mọi chuyện đã ok.
6 Truyền Data từ controller sang view
Nếu bạn muốn truyền data từ controller qua view thì bạn sử dụng tham số thứ hai trong phương thức
load()
.
1
| $this ->view->load( 'view' , $data ); |
Trong đó
$data
có dạng mảng key => value
và sau khi chuyển sang view nó sẽ có một biến $key = value
, lúc này bạn chỉ việcecho $key
là được.
Để rõ hơn thì ta làm ví dụ sau.
Bước 1: Bạn sửa lại
View_Ccontroller
như sau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| <?php if ( ! defined( 'PATH_SYSTEM' )) die ( 'Bad requested!' ); class View_Controller extends FT_Controller { public function indexAction() { $data = array ( 'title' => 'Chào mừng các bạn đến với freetuts.net' ); // Load view $this ->view->load( 'view' , $data ); // Show view $this ->view->show(); } } |
Bước 2: Vào
admin/view/view.php
sửa lại nội dung như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| <!DOCTYPE html> <html> <head> <title></title> <meta http-equiv= "Content-Type" content= "text/html; charset=UTF-8" > <style> #header{ height: 150px; background: red; } #footer{ height: 150px; background: blue; } #content{ height: 150px; background: yellow; } </style> </head> <body> <div id= "header" > <h2><?php echo $title ; ?><h2> </div> <div id= "content" > CONTENT </div> <div id= "footer" > FOOTER </div> </body> </html> |
Chạy lên giao diện sẽ như sau:
Ok mọi chuyện đã giải quyết xong và bạn có thể đi ngủ được rồi đấy :D.
7. Lời kết
Trong bài này quan trọng nhất là bạn phải hiểu phương thức
load()
trong đối tượng view loader, bạn chú ý mình có dùng hàmextract
để chuyển mảng dữ liệu dạng key => value
thành tường biến tương ứng $key = value
. Còn ob_start()
là hàm sẽ báo cho PHP biết chúng ta đang load dữ liệu và không cần in ra cho nên bạn chỉ cần sử dụng hàm ob_get_contents()
để lấy nội dung trong. Bài tiếp theo chúng ta sẽ tìm hiểu Base_Controller
nhé.
Nguồn: http://freetuts.net/mvc-php-viet-thu-vien-load-view-362.html
Bài đăng phổ biến từ blog này
[Share] CSDL Quản lý Shop Online
Cấu trúc của cơ sở dữ liệu Danh sách các bảng 1. Bảng About (Lưu các bài viết giới thiệu cửa hàng) 2. Bảng Contact (Lưu thông tin liên hệ của cửa hàng) 3. Bảng Feedback (Lưu trữ thông tin phản hồi của người dùng) 4. Bảng Footer (Lưu trữ những thiết kế footer của trang web) 5. Bảng MenuType (Lưu trữ các loại menu trong trang web. Ví dụ : TopMenu, LeftMenu…) 6. Bảng Menu (Lưu trữ các menu) 7. Bảng NewCategory (Lưu trữ các nhóm chuyên mục về tin tức. Ví dụ : Tin khuyến mãi, tin công nghệ,…) 8. Bảng New (Lưu trữ các tin tức, bài đăng trên website) 9. Bảng Tag (Lưu trữ các thẻ) 10. Bảng ...
Hướng dẫn cài đặt VRML Pad và Cortona 3D Viewer
1. Hướng dẫn cài đặt VrmlPad 3.0 Chào các bạn. Hôm nay mình sẽ hướng dẫn các bạn cài đặt VrmlPad 3.0 Đầu tiên các bạn truy cập vào link sau để download phần mềm http://www.parallelgraphics.com/products/vrmlpad/download/ Ở phần VrmlPad 3.0 > Evalustion version chọn Download Sau khi quá trình tải về hoàn tất Các bạn tiến hành cài đặt phần mềm Chọn Next Nhấn Browser để chọn đường dẫn cài đặt phần mềm, chọn Next Chọn Install Chờ quá trình cài đặt phần mềm thành công. Nhấn Finish OK. Mình đã cài đặt xong. Giao diện phần mềm khi chạy lần đầu tiên Các bạn đã có thể soạn thảo Nhưng để chạy được file .wrl này chúng ta sẽ cài thêm 1 phần mềm bổ trợ Cortona 3D 2. Hướng dẫn cài đặt Cortona 3D Viewer Các bạn vào link sau để download http://www.cortona3d.com/ Chọn Menu " PRODUCTS " > " VIEWERS " > " CORTONA 3D VIEWER " Tiếp theo chọn DOWNLOAD CORTONA 3D VIEWER Chọn download tùy vào...
RANKING in SQL (ROW_NUMBER, RANK, DENSE_RANK,NTILE)
Hàm Ranking là gì? Các hàm Ranking cho phép bạn có thể đánh số liên tục (xếp loại) cho các tập hợp kết quả. Các hàm này có thể được sử dụng để cung cấp số thứ tự trong hệ thống đánh số tuần tự khác nhau. Có thể hiểu đơn giản như sau: bạn có từng con số nằm trên từng dòng liên tục, tại dòng thứ nhất xếp loại số 1, dòng thứ 2 xếp loại số là 2… Bạn có thể sử dụng hàm ranking theo các nhóm số tuần tự, mỗi một nhóm sẽ được đánh số theo lược đồ 1,2,3 và nhóm tiếp theo lại bắt đầu bằng 1,2,3… Chúng ta bắt đầu xem xét cách hàm trong sql hổ trợ từ 2005 Dữ liệu thử : CREATE TABLE Person( FirstName VARCHAR(10), Age INT, Gender CHAR(1) ) INSERT INTO Person VALUES ('Ted', 23, 'M') INSERT INTO Person VALUES ('John', 40, 'M') INSERT INTO Person VALUES ('George', 6, 'M') INSERT INTO Person VALUES ('Mary', 11, 'F') INSERT INTO Person VALUES ('Sam', 17, 'M') INSERT INTO Pe...
Nhận xét
Đăng nhận xét