SlideShare une entreprise Scribd logo
1  sur  12
Télécharger pour lire hors ligne
Cách tạo một module đơn giản trên phpfox
Ở bài viết này, tôi sẽ trình bày một cách chi tiết các bước xây dựng một module đơn giản trên công cụ
phpfox. Chúng ta sẽ tiếp cận bằng cách thực hiện một ví dụ cụ thể, các bạn có thể áp dụng những chi tiết
trong ví dụ này để áp dụng cho những project của các bạn.
Đề bài: Viết một module trên phpfox tạo một user và insert thông tin user đó vào cơ sở dữ liệu, đồng thời
hiển thị thông tin user vừa tạo trên một menu ở AdminCP.

Cách thực hiện:
Phiên bản sử dụng: phpfox 3.5.1
Bạn có thể download phpfox tại đây.
Hướng dẫn cài đặt phpfox bạn có thể tham khảo ở đây.

Create a new product
Đầu tiên bạn sẽ tạo một product mới (nơi chứa module của bạn). Tuy nhiên, đây chỉ là bước tùy chọn vì
bạn có thể đặt module của mình vào một product bất kì có sẵn trên phpfox. Mặc dù vậy, việc sử dụng một
product riêng của bản thân sẽ giúp bạn có thể tùy biến dễ dàng những chức năng trong nó. Các bước để
tạo một product mới như sau:
Đăng nhập với tài khoản AdminCP và truy nhập đường dẫn sau:
Extensions >> Product >> Create New Product
Điền đầy đủ các thông tin vào form và click nút submit:

Dưới đây tôi sẽ giải thích chi tiết thông tin của từng trường:








Product ID: giá trị ID duy nhất của product. Nó có thể là kí tự số, chữ cái và dấu gạch dưới (_), và
luôn ở dạng chữ cái thường. Ở đây tôi sẽ chọn là create_user.
Title: tiêu đề của product, thứ mà sẽ hiển thị trong danh sách các product. Ở đây tôi sẽ chọn là
Create new user.
Description: mô tả ngắn về product. Ở đây tôi sẽ chọn là Create a new user manually.
Version: phiên bản hiện tại của product. Do tôi mới tạo product này nên tôi sẽ chọn là 1.0.
Product URL: URL của website của bạn, ở đây tôi sử dụng localhost nên sẽ điền là: localhost.
Version Check URL: URL để phpfox kiểm tra phiên bản release của product. Ở đây tôi điền là
localhost/version.php.
Active: thiết lập trạng thái của product là active hoặc inactive. Chọn Yes.

Create new module in AdminCP
Đăng nhập vào AdminCP và vào theo đường dẫn:
Extension >> Module >> Create New Module
Tiếp theo chúng ta sẽ điền đầy đủ vào form dưới đây và click nút submit:

Chi tiết thông tin của từng trường:





Product: tên của product chứa module của bạn. Ở đây tôi sẽ chon là Create new user.
Module ID: id của module. Ở đây tôi chọn là createuser.
Add to Menu: chọn Yes để module của bạn xuất hiện trong Module menu.
Sub Menu: Khi bạn chọn Yes ở phần Add to Menu, bạn sẽ bắt buộc phải điền thông tin ở mục Sub
Menu này. Ở đây chúng ta sẽ định nghĩa tên của các sub menu và URL tương ứng. Tôi sẽ tạo 2 sub
menu: Show info để hiển thị thông tin người dùng, với link createuser được hiểu là đường dẫn
http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/; Add new tạo form
để điền thông tin người dùng và insert thông tin đó vào cơ sở dữ liệu, với link createuser.add đại


diện
cho
đường
dẫn
http://localhost/phpFox3.5.1/upload/index.php?do=/admincp/createuser/add/.
Info: Mô tả ngắn về module. Ở đây tôi chọn là Admin can create a new user manually!.

Build file structure
Dẫn đến folder /module/ trên server của bạn nơi chứa file cài đặt của phpfox. Tạo một folder mới với tên
của module mà bạn vừa tạo, của tôi là createuser. Bên trong folder mới bạn sẽ tạo theo cấu trúc sau:
/include/
/include/component/
/include/component/ajax/
/include/component/block/
/include/component/controller/
/include/component/controller/admincp
/include/plugin/
/include/service/
/static/
/static/css/default/default/
/static/image/
/static/jscript/
/template/
/template/default/
/template/default/block/
/template/default/controller/
/template/default/controller/admincp
Chú ý rằng đây là cấu trúc file dạng đầy đủ của một module, vì vậy tùy vào mục đích của bạn mà bạn có
thể chỉ cần tạo một số thư mục cần thiết.

Create a controller
Controller là những file php điều khiển tất cả các page của phpfox. Đầu tiên hãy tạo một php class file cho
controller của chúng ta:
/module/createuser/include/component/controller/admincp/index.class.ph
p
Nội dung của file index.class.php như sau:
index.class.php
<?php
class Createuser_Component_Controller_Admincp_Index extends Phpfox_Component
{
public function process() {
}
}
?>

Tiếp theo chúng ta sẽ tạo một file HTML cho controller vừa tạo của chúng ta:
modulecreateusertemplatedefaultcontrolleradmincpindex.html.php
Trong file index.html.php, bạn có thể thêm dòng sau để kiểm tra tính kết nối giữa file controller và html
mà bạn vừa tạo.
index.html.php
Helloworld!
Truy nhập vào đường dẫn sau:
http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/
Hoặc truy nhập vào AdminCP và đi theo đường dẫn:
Module >> Createuser >> Show info
Đây là kết quả thu được:

Giải thích chi tiết:
Tên lớp trong file index.class.php là:
Createuser_Component_Controller_Admincp_Index
Nếu thay dấu gạch dưới (_) bằng dấu gạch trái (/) thì nó sẽ nhắc bạn tới đường dẫn đến file index.class.php
của chúng ta:
/module/createuser/include/component/controller/admincp/index.class.ph
p
Lớp này sẽ kế thừa từ lớp Phpfox_Component, lý do là nó nằm trong thư mục Component.
Để thực thi được controller này, ta cần cung cấp phương thức public process().
Cái tên index ở đây là bắt buộc khi bạn muốn dẫn đến module gốc ở đường link:
http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/
Tiếp theo chúng ta sẽ tạo file add.class.php, đây sẽ là controller của đường dẫn:
http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/add/
Và tất nhiên bạn vẫn sẽ phải tạo một file html tương ứng (add.html.php) ở thư mục
modulecreateusertemplatedefaultcontrolleradmincp để hiển thị thông tin cần thiết.
Ta sẽ xây dựng form trong add.html.php để nhập thông tin user cần tạo. Đây là dạng form mà tôi đã tạo.

Và dưới đây là đoạn code tương ứng:
add.html.php
<html>
<body>
<form action="{url link='admincp.createuser.index'}"
method="post" id="add_new_user">
<div class="user_create">
<div class="table_header">
User Infomation
</div>
<div class="table">
<div class="table_left">
{required}Full name:
</div>
<div class="table_right">
<input type="text" name="full_name"
size="40" value="yourname" />
</div>
</div>
<div class="table">
<div class="table_left">
{required}Email:
</div>
<div class="table_right">
<input type="text" name="email"
size="40" value="someone@example.com" required />
</div>
</div>
<div class="table">
<div class="table_left">
{required}Password:
</div>
<div class="table_right">
<input type="password" name="password"
size="40" value="" required/>
</div>
</div>
<div class="table">
<div class="table_left">
{required}Birthday:
</div>
<div class="table_right">
<select name="month">
<option value="">Month: </option>
{foreach from=$months item=month}
<option
value={$i++}>{$month}</option>
{/foreach}
</select>
/
<select name="day">
<option value="">Day: </option>
{foreach from=$days item=day}
<option
value={$day}>{$day}</option>
{/foreach}
</select>
/
<select name="year">
<option value="">Year: </option>
{foreach from=$years item=year}
<option
value={$year}>{$year}</option>
{/foreach}
</select>
</div>
</div>
<div class="table">
<div class="table_left">
{required}I am:
</div>
<div class="table_right">
<select name="gender">
<option value="">Select: </option>
<option value="1">Male</option>
<option value="2">Female</option>
</select>
</div>
</div>
<div class="table_clear">
<input type="submit" value="{phrase
var='core.submit'}" class="button" name="submit" />
</div>
</div>
</form>
</body>
</html>

Giải thích code:
Action ở form là:
action="{url link='admincp.createuser.index'}"
Link 'admincp.createuser.index’ có dạng ‘[admincp.]module_name.file_name_prefix’, phần admincp. có
thể có hoặc không tùy thuộc vào việc module thực hiện trên admincp hay trên site thông thường. Ý nghĩa
là form này sau khi click submit sẽ thực hiện đoạn code trong file index.class.php và index.html.php.
Các thẻ div ở đây tôi có sử dụng các class được định nghĩa sẵn trong phpfox để đồng nhất với những form
của các module khác. Thông tin về các class này bạn có thể xem trong các file html nằm trong các module
có sẵn của phpfox.
Từ {required} thay thế cho dấu * màu đỏ.
Tiếp theo là một vòng lặp khá đặc biệt:
{foreach from=$months item=month}...{/foreach}
Vòng lặp này có nghĩa là duyệt tất cả các phần tử trong mảng $months, mỗi phần tử sẽ được đại diện bởi
biến $month. Trong PHP, vòng lặp này sẽ được viết lại như sau:
foreach($months as $month){}
Câu hỏi là mảng $months này được lấy từ đâu ra? Thực ra mảng $month được gán trong file
add.class.php. Nội dung file add.class.php như sau:
add.class.php
<?php
class Createuser_Component_Controller_Admincp_Add extends Phpfox_Component{
public function process() {
$month = array('January', 'February', 'March', 'April', 'May',
'June', 'July', 'August', 'September', 'October', 'November', 'December');
$day = array();
$year = array();
for ($i = 1; $i < 32; $i++) {
$day[] = $i;
}
for ($j = 1900; $j < 2015; $j++) {
$year[] = $j;
}
$this->template()->assign(array(
'months' => $month,
'days' => $day,
'years' => $year
));
}
}
?>

Bởi vì đoạn mã của chúng ta sử dụng mô hình MVC, tức là logic PHP trong file class tách biệt với logic thiết
kế trong file html, vì vậy các thông tin trong file class sẽ được gán vào các biến để sử dụng trong file html.
Phpfox cung cấp phương thức assign() có trong lớp Phpfox_Template để thực hiện phép gán này.

Hiển thị thông tin người dùng trên menu Show info
Menu
Show
info
có
url
dẫn
đến
module
gốc
http://localhost/phpFox3.5.1/upload/index.php?do=/admincp/createuser/. Do đó ta sẽ xây dựng giao diện cho menu này qua file
index.html.php và điều khiển bằng controller index.class.php.
Nội dung file index.html.php:
index.html.php
<html>
<div class="table_header">
Show user info
</div>
<div class="table">
<div class="table_left">
Name:
</div>
<div class="table_right">
{$fulname}
</div>
</div>
<div class="table">
<div class="table_left">
Email:
</div>
<div class="table_right">
{$email}
</div>
</div>
<div class="table">
<div class="table_left">
Birthday:
</div>
<div class="table_right">
{$birthday}
</div>
</div>
<div class="table">
<div class="table_left">
Gender:
</div>
<div class="table_right">
{$gender}
</div>
</div>
</html>

Các biến cần lấy ở đây là $fulname, $email, $birthday, $gender. Những biến này sẽ được lấy bằng mảng
$_POST thông qua form được xây dựng ở file add.html.php.
Nội dung của file index.class.php:
index.class.php
<?php
class Createuser_Component_Controller_Admincp_Index extends Phpfox_Component
{
public function process() {
$this->template()->assign(array(
'fulname' => $_POST['full_name'],
'email' => $_POST['email'],
'password' => md5($_POST['password']),
'birthday' => $month . $_POST['day'] .
$_POST['year'],
'gender' => $_POST['gender']
));
}
}
?>

Đến đây ta sẽ test thử việc hiển thị thông tin người dùng. Truy nhập theo đường dẫn
http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/add/ hoặc đăng nhập vào
AdminCP, truy nhập vào đường dẫn Module ≫ Createuser ≫ Add new, nhập đầy đủ thông tin vào form
sau:

Click Submit và hệ thống sẽ tự động điều hướng đến link http://localhost/phpFox3.5.1/upload/index.php?do=/admincp/createuser/index/:
Insert thông tin người dùng vào cơ sở dữ liệu
Để truy nhập và thực hiện các phương thức lên cơ sở dữ liệu, tôi sẽ tạo một service extends từ
Phpfox_Service. File service này nằm trên đường dẫn:
modulecreateuserincludeservicecreateuser.class.php
Phpfox quy định mỗi module chỉ có một service duy nhất để thao tác với cơ sở dữ liệu và chỉ có tên dạng
module_name.class.php. Nội dung của file createuser.class.php:
createuser.class.php
<?php
class Createuser_Service_Createuser extends Phpfox_Service {
public function insert_user() {
$month = $_POST['month'];
switch ($month) {
case 'January': $month = '01';
break;
case 'February': $month = '02';
break;
case 'March': $month = '03';
break;
case 'April': $month = '04';
break;
case 'May': $month = '05';
break;
case 'June': $month = '06';
break;
case 'July': $month = '07';
break;
case 'August': $month = '08';
break;
case 'September': $month = '09';
break;
case 'October': $month = 10;
break;
case 'November': $month = 11;
break;
case 'December': $month = 12;
break;
}
$insert = Phpfox::getLib('database')->insert('phpfox_user',
array(
'user_group_id' => '2',
'full_name' => $_POST['full_name'],
'email' => $_POST['email'],
'password' => md5($_POST['password']),
'birthday' => $month . $_POST['day'] .
$_POST['year'],
'gender' => $_POST['gender']
));
return $insert;
}
}
?>

Tên lớp vẫn tuân thủ theo định dạng được định nghĩa ở trên.
Do giá trị $month ban đầu ở dạng chữ mà không phải dạng số, trong khi dạng hiển thị birthday trong cơ
sở dữ liệu là mmddyyyy, nên ta sẽ chuyển giá trị $month từ dạng chữ sang dạng số cho phù hợp.
Có 2 cách để thực hiện insert vào cơ sở dữ liệu:
$this→database()→insert(‘table_name’, array(‘collumn_name_1’ =>‘value_1’,
‘collumn_name_2’ => ‘value_2’, …));
Phpfox::getLib('database')->insert(‘table_name’, array(‘collumn_name_1’ =>‘value_1’,

‘collumn_name_2’ => ‘value_2’, …));
ở đó column_name_i là tên cột thứ i, còn value_i là giá trị của cột tương ứng.
Tiếp theo chúng ta sẽ thực thi service này. Yêu cầu là click nút Submit thì service này cũng được thực thi,
nên ta sẽ thực hiện việc thực thi này trong phương thức process của file index.class.php. Chúng ta sẽ thêm
đoạn code sau trong file index.class.php.
Phpfox::getService('createuser')->insert_user();
Phương thức getService nhận tham số là tên module và gọi đến phương thức insert_user() để thực hiện
việc insert thông tin người dùng vào cơ sở dữ liệu.

Test
Chúng ta sẽ thực hiện test với người dùng John Adam ở trên. Đây là ảnh cơ sở dữ liệu trước khi click nút
Submit.
Sau khi click nút Submit.

Chú ý: Do ở đây tôi thực hiện trên localhost nên các đường dẫn đều bắt đầu bằng localhost, nếu bạn tạo
module trên server của bạn, hãy thay localhost bằng tên site của bạn trong các đường dẫn mà tôi đưa ra.

Contenu connexe

Tendances

Quản trị joomla toàn tập
Quản trị joomla toàn tậpQuản trị joomla toàn tập
Quản trị joomla toàn tập
dvms
 

Tendances (20)

Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPTBài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
Bài 7 Xây dựng website sử dụng PHP và MySQL - Giáo trình FPT
 
Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng webBài 4 Bảo mật cho website - Xây dựng ứng dụng web
Bài 4 Bảo mật cho website - Xây dựng ứng dụng web
 
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng webBài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
Bài 2 Các kỹ thuật lập trình MySQL với PHP nâng cao - Xây dựng ứng dụng web
 
Web301 slide 4
Web301   slide 4Web301   slide 4
Web301 slide 4
 
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPTBài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
Bài 2 Làm quen với môi trường PHP và MySQL (phần 2) - Giáo trình FPT
 
Web201 slide 2
Web201   slide 2Web201   slide 2
Web201 slide 2
 
Web3012 assignment
Web3012   assignmentWeb3012   assignment
Web3012 assignment
 
Bai tap php_m123
Bai tap php_m123Bai tap php_m123
Bai tap php_m123
 
Gioi thieu joomla
Gioi thieu joomlaGioi thieu joomla
Gioi thieu joomla
 
Web203 slide 5
Web203   slide 5Web203   slide 5
Web203 slide 5
 
Web301 slide 7
Web301   slide 7Web301   slide 7
Web301 slide 7
 
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
Tài liệu Zend Framework 2 - Cài đặt và cấu hình Zend Framework 2 - Bài 2
 
Asp control
Asp controlAsp control
Asp control
 
Tìm hiểu về Joomla
Tìm hiểu về Joomla Tìm hiểu về Joomla
Tìm hiểu về Joomla
 
Web301 slide 1
Web301   slide 1Web301   slide 1
Web301 slide 1
 
Hướng dẩn cập nhật bài viết trên Joomla
Hướng dẩn cập nhật bài viết trên JoomlaHướng dẩn cập nhật bài viết trên Joomla
Hướng dẩn cập nhật bài viết trên Joomla
 
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng webBài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
Bài 1 Lập trình website theo mô hình MVC - Xây dựng ứng dụng web
 
Asp.net mvc 3 (c#) (9 tutorials) egroups vn
Asp.net mvc 3 (c#) (9 tutorials)   egroups vnAsp.net mvc 3 (c#) (9 tutorials)   egroups vn
Asp.net mvc 3 (c#) (9 tutorials) egroups vn
 
Lap trinh-joomla-15-theo-mo-hinh-mvc
Lap trinh-joomla-15-theo-mo-hinh-mvcLap trinh-joomla-15-theo-mo-hinh-mvc
Lap trinh-joomla-15-theo-mo-hinh-mvc
 
Quản trị joomla toàn tập
Quản trị joomla toàn tậpQuản trị joomla toàn tập
Quản trị joomla toàn tập
 

En vedette (9)

Taylor swift khen toc tien giong marilyn monroe
Taylor swift khen toc tien giong marilyn monroeTaylor swift khen toc tien giong marilyn monroe
Taylor swift khen toc tien giong marilyn monroe
 
FBI戳穿谎言惯用九大秘笈
FBI戳穿谎言惯用九大秘笈FBI戳穿谎言惯用九大秘笈
FBI戳穿谎言惯用九大秘笈
 
环保设计 Eco design
环保设计 Eco design环保设计 Eco design
环保设计 Eco design
 
Facebook в системі бібліотечних інтернет-комунікацій
Facebook в системі бібліотечних інтернет-комунікаційFacebook в системі бібліотечних інтернет-комунікацій
Facebook в системі бібліотечних інтернет-комунікацій
 
Facebook And Academic Libraries
Facebook And Academic LibrariesFacebook And Academic Libraries
Facebook And Academic Libraries
 
Sierra 101 powerpoint
Sierra 101 powerpointSierra 101 powerpoint
Sierra 101 powerpoint
 
X'mas Green Guide a to z
X'mas Green Guide a to zX'mas Green Guide a to z
X'mas Green Guide a to z
 
Jay Z
Jay  ZJay  Z
Jay Z
 
patrón Duende amigurumi
patrón Duende amigurumipatrón Duende amigurumi
patrón Duende amigurumi
 

Similaire à Create easymoduleinphpfox

Tailieuonline.tk joomla-viet-component
 Tailieuonline.tk joomla-viet-component Tailieuonline.tk joomla-viet-component
Tailieuonline.tk joomla-viet-component
zzbabyloveszz
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsd
Vu Hung Nguyen
 
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajaxSức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Tuyet Tam
 
Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010
Nhat Linh Luong
 
Tutoria mvc framework
Tutoria mvc frameworkTutoria mvc framework
Tutoria mvc framework
Xuan Le
 
Tran thikimthao k37103014_wordpress
Tran thikimthao k37103014_wordpressTran thikimthao k37103014_wordpress
Tran thikimthao k37103014_wordpress
Tím Biếc
 

Similaire à Create easymoduleinphpfox (20)

tao module joomla 1.5
tao module  joomla 1.5tao module  joomla 1.5
tao module joomla 1.5
 
Zend Framework 2.0: Upload file và Multi upload files trong ZF2 - Bài 9
Zend Framework 2.0:  Upload file và Multi upload files trong ZF2 - Bài 9Zend Framework 2.0:  Upload file và Multi upload files trong ZF2 - Bài 9
Zend Framework 2.0: Upload file và Multi upload files trong ZF2 - Bài 9
 
Tailieuonline.tk joomla-viet-component
 Tailieuonline.tk joomla-viet-component Tailieuonline.tk joomla-viet-component
Tailieuonline.tk joomla-viet-component
 
Joo
JooJoo
Joo
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
 
Yii
YiiYii
Yii
 
Joomla developermanual
Joomla developermanualJoomla developermanual
Joomla developermanual
 
Hỏi tình hình bk tiny bktiny-hdsd
Hỏi tình hình bk tiny   bktiny-hdsdHỏi tình hình bk tiny   bktiny-hdsd
Hỏi tình hình bk tiny bktiny-hdsd
 
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập
[Athena] Nguyễn Nhật Nguyên - Báo cáo thực tập
 
The First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupThe First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress Meetup
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
 
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì?  9 Thứ thú vị có thể làm với PHPPHP có thể làm gì?  9 Thứ thú vị có thể làm với PHP
PHP có thể làm gì? 9 Thứ thú vị có thể làm với PHP
 
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajaxSức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
Sức mạnh của jsf 2, phần 3 xử lý sự kiện, java script và ajax
 
Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010
 
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
Giáo trình lập trình Wordpress - bài 4 - Tạo Plugin căn bản
 
Mixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid projectMixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid project
 
Asp.net mvc framework qua cac vi du
Asp.net mvc framework  qua cac vi duAsp.net mvc framework  qua cac vi du
Asp.net mvc framework qua cac vi du
 
Tutoria mvc framework
Tutoria mvc frameworkTutoria mvc framework
Tutoria mvc framework
 
Php cơ bản của trung tâm hocweb.com.vn
Php cơ bản của trung tâm hocweb.com.vnPhp cơ bản của trung tâm hocweb.com.vn
Php cơ bản của trung tâm hocweb.com.vn
 
Tran thikimthao k37103014_wordpress
Tran thikimthao k37103014_wordpressTran thikimthao k37103014_wordpress
Tran thikimthao k37103014_wordpress
 

Dernier

bài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhbài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hành
dangdinhkien2k4
 
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxBài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
DungxPeach
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
ChuThNgnFEFPLHN
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
hoangtuansinh1
 

Dernier (20)

TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
 
bài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hànhbài tập lớn môn kiến trúc máy tính và hệ điều hành
bài tập lớn môn kiến trúc máy tính và hệ điều hành
 
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxBài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
 
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdfxemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfxemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng TạoĐề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
 
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdfSLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
SLIDE - Tu van, huong dan cong tac tuyen sinh-2024 (đầy đủ chi tiết).pdf
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phương
 
bài thi bảo vệ nền tảng tư tưởng của Đảng.docx
bài thi bảo vệ nền tảng tư tưởng của Đảng.docxbài thi bảo vệ nền tảng tư tưởng của Đảng.docx
bài thi bảo vệ nền tảng tư tưởng của Đảng.docx
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
 

Create easymoduleinphpfox

  • 1. Cách tạo một module đơn giản trên phpfox Ở bài viết này, tôi sẽ trình bày một cách chi tiết các bước xây dựng một module đơn giản trên công cụ phpfox. Chúng ta sẽ tiếp cận bằng cách thực hiện một ví dụ cụ thể, các bạn có thể áp dụng những chi tiết trong ví dụ này để áp dụng cho những project của các bạn. Đề bài: Viết một module trên phpfox tạo một user và insert thông tin user đó vào cơ sở dữ liệu, đồng thời hiển thị thông tin user vừa tạo trên một menu ở AdminCP. Cách thực hiện: Phiên bản sử dụng: phpfox 3.5.1 Bạn có thể download phpfox tại đây. Hướng dẫn cài đặt phpfox bạn có thể tham khảo ở đây. Create a new product Đầu tiên bạn sẽ tạo một product mới (nơi chứa module của bạn). Tuy nhiên, đây chỉ là bước tùy chọn vì bạn có thể đặt module của mình vào một product bất kì có sẵn trên phpfox. Mặc dù vậy, việc sử dụng một product riêng của bản thân sẽ giúp bạn có thể tùy biến dễ dàng những chức năng trong nó. Các bước để tạo một product mới như sau: Đăng nhập với tài khoản AdminCP và truy nhập đường dẫn sau: Extensions >> Product >> Create New Product Điền đầy đủ các thông tin vào form và click nút submit: Dưới đây tôi sẽ giải thích chi tiết thông tin của từng trường:
  • 2.        Product ID: giá trị ID duy nhất của product. Nó có thể là kí tự số, chữ cái và dấu gạch dưới (_), và luôn ở dạng chữ cái thường. Ở đây tôi sẽ chọn là create_user. Title: tiêu đề của product, thứ mà sẽ hiển thị trong danh sách các product. Ở đây tôi sẽ chọn là Create new user. Description: mô tả ngắn về product. Ở đây tôi sẽ chọn là Create a new user manually. Version: phiên bản hiện tại của product. Do tôi mới tạo product này nên tôi sẽ chọn là 1.0. Product URL: URL của website của bạn, ở đây tôi sử dụng localhost nên sẽ điền là: localhost. Version Check URL: URL để phpfox kiểm tra phiên bản release của product. Ở đây tôi điền là localhost/version.php. Active: thiết lập trạng thái của product là active hoặc inactive. Chọn Yes. Create new module in AdminCP Đăng nhập vào AdminCP và vào theo đường dẫn: Extension >> Module >> Create New Module Tiếp theo chúng ta sẽ điền đầy đủ vào form dưới đây và click nút submit: Chi tiết thông tin của từng trường:     Product: tên của product chứa module của bạn. Ở đây tôi sẽ chon là Create new user. Module ID: id của module. Ở đây tôi chọn là createuser. Add to Menu: chọn Yes để module của bạn xuất hiện trong Module menu. Sub Menu: Khi bạn chọn Yes ở phần Add to Menu, bạn sẽ bắt buộc phải điền thông tin ở mục Sub Menu này. Ở đây chúng ta sẽ định nghĩa tên của các sub menu và URL tương ứng. Tôi sẽ tạo 2 sub menu: Show info để hiển thị thông tin người dùng, với link createuser được hiểu là đường dẫn http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/; Add new tạo form để điền thông tin người dùng và insert thông tin đó vào cơ sở dữ liệu, với link createuser.add đại
  • 3.  diện cho đường dẫn http://localhost/phpFox3.5.1/upload/index.php?do=/admincp/createuser/add/. Info: Mô tả ngắn về module. Ở đây tôi chọn là Admin can create a new user manually!. Build file structure Dẫn đến folder /module/ trên server của bạn nơi chứa file cài đặt của phpfox. Tạo một folder mới với tên của module mà bạn vừa tạo, của tôi là createuser. Bên trong folder mới bạn sẽ tạo theo cấu trúc sau: /include/ /include/component/ /include/component/ajax/ /include/component/block/ /include/component/controller/ /include/component/controller/admincp /include/plugin/ /include/service/ /static/ /static/css/default/default/ /static/image/ /static/jscript/ /template/ /template/default/ /template/default/block/ /template/default/controller/ /template/default/controller/admincp Chú ý rằng đây là cấu trúc file dạng đầy đủ của một module, vì vậy tùy vào mục đích của bạn mà bạn có thể chỉ cần tạo một số thư mục cần thiết. Create a controller Controller là những file php điều khiển tất cả các page của phpfox. Đầu tiên hãy tạo một php class file cho controller của chúng ta: /module/createuser/include/component/controller/admincp/index.class.ph p Nội dung của file index.class.php như sau: index.class.php <?php class Createuser_Component_Controller_Admincp_Index extends Phpfox_Component { public function process() { } }
  • 4. ?> Tiếp theo chúng ta sẽ tạo một file HTML cho controller vừa tạo của chúng ta: modulecreateusertemplatedefaultcontrolleradmincpindex.html.php Trong file index.html.php, bạn có thể thêm dòng sau để kiểm tra tính kết nối giữa file controller và html mà bạn vừa tạo. index.html.php Helloworld! Truy nhập vào đường dẫn sau: http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/ Hoặc truy nhập vào AdminCP và đi theo đường dẫn: Module >> Createuser >> Show info Đây là kết quả thu được: Giải thích chi tiết: Tên lớp trong file index.class.php là: Createuser_Component_Controller_Admincp_Index Nếu thay dấu gạch dưới (_) bằng dấu gạch trái (/) thì nó sẽ nhắc bạn tới đường dẫn đến file index.class.php của chúng ta: /module/createuser/include/component/controller/admincp/index.class.ph p Lớp này sẽ kế thừa từ lớp Phpfox_Component, lý do là nó nằm trong thư mục Component. Để thực thi được controller này, ta cần cung cấp phương thức public process(). Cái tên index ở đây là bắt buộc khi bạn muốn dẫn đến module gốc ở đường link: http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/
  • 5. Tiếp theo chúng ta sẽ tạo file add.class.php, đây sẽ là controller của đường dẫn: http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/add/ Và tất nhiên bạn vẫn sẽ phải tạo một file html tương ứng (add.html.php) ở thư mục modulecreateusertemplatedefaultcontrolleradmincp để hiển thị thông tin cần thiết. Ta sẽ xây dựng form trong add.html.php để nhập thông tin user cần tạo. Đây là dạng form mà tôi đã tạo. Và dưới đây là đoạn code tương ứng: add.html.php <html> <body> <form action="{url link='admincp.createuser.index'}" method="post" id="add_new_user"> <div class="user_create"> <div class="table_header"> User Infomation </div> <div class="table"> <div class="table_left"> {required}Full name: </div> <div class="table_right"> <input type="text" name="full_name" size="40" value="yourname" /> </div> </div> <div class="table"> <div class="table_left"> {required}Email: </div> <div class="table_right"> <input type="text" name="email" size="40" value="someone@example.com" required /> </div> </div>
  • 6. <div class="table"> <div class="table_left"> {required}Password: </div> <div class="table_right"> <input type="password" name="password" size="40" value="" required/> </div> </div> <div class="table"> <div class="table_left"> {required}Birthday: </div> <div class="table_right"> <select name="month"> <option value="">Month: </option> {foreach from=$months item=month} <option value={$i++}>{$month}</option> {/foreach} </select> / <select name="day"> <option value="">Day: </option> {foreach from=$days item=day} <option value={$day}>{$day}</option> {/foreach} </select> / <select name="year"> <option value="">Year: </option> {foreach from=$years item=year} <option value={$year}>{$year}</option> {/foreach} </select> </div> </div> <div class="table"> <div class="table_left"> {required}I am: </div> <div class="table_right"> <select name="gender"> <option value="">Select: </option> <option value="1">Male</option> <option value="2">Female</option> </select> </div> </div> <div class="table_clear"> <input type="submit" value="{phrase var='core.submit'}" class="button" name="submit" />
  • 7. </div> </div> </form> </body> </html> Giải thích code: Action ở form là: action="{url link='admincp.createuser.index'}" Link 'admincp.createuser.index’ có dạng ‘[admincp.]module_name.file_name_prefix’, phần admincp. có thể có hoặc không tùy thuộc vào việc module thực hiện trên admincp hay trên site thông thường. Ý nghĩa là form này sau khi click submit sẽ thực hiện đoạn code trong file index.class.php và index.html.php. Các thẻ div ở đây tôi có sử dụng các class được định nghĩa sẵn trong phpfox để đồng nhất với những form của các module khác. Thông tin về các class này bạn có thể xem trong các file html nằm trong các module có sẵn của phpfox. Từ {required} thay thế cho dấu * màu đỏ. Tiếp theo là một vòng lặp khá đặc biệt: {foreach from=$months item=month}...{/foreach} Vòng lặp này có nghĩa là duyệt tất cả các phần tử trong mảng $months, mỗi phần tử sẽ được đại diện bởi biến $month. Trong PHP, vòng lặp này sẽ được viết lại như sau: foreach($months as $month){} Câu hỏi là mảng $months này được lấy từ đâu ra? Thực ra mảng $month được gán trong file add.class.php. Nội dung file add.class.php như sau: add.class.php <?php class Createuser_Component_Controller_Admincp_Add extends Phpfox_Component{ public function process() { $month = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); $day = array(); $year = array(); for ($i = 1; $i < 32; $i++) { $day[] = $i; } for ($j = 1900; $j < 2015; $j++) { $year[] = $j; } $this->template()->assign(array( 'months' => $month, 'days' => $day, 'years' => $year )); }
  • 8. } ?> Bởi vì đoạn mã của chúng ta sử dụng mô hình MVC, tức là logic PHP trong file class tách biệt với logic thiết kế trong file html, vì vậy các thông tin trong file class sẽ được gán vào các biến để sử dụng trong file html. Phpfox cung cấp phương thức assign() có trong lớp Phpfox_Template để thực hiện phép gán này. Hiển thị thông tin người dùng trên menu Show info Menu Show info có url dẫn đến module gốc http://localhost/phpFox3.5.1/upload/index.php?do=/admincp/createuser/. Do đó ta sẽ xây dựng giao diện cho menu này qua file index.html.php và điều khiển bằng controller index.class.php. Nội dung file index.html.php: index.html.php <html> <div class="table_header"> Show user info </div> <div class="table"> <div class="table_left"> Name: </div> <div class="table_right"> {$fulname} </div> </div> <div class="table"> <div class="table_left"> Email: </div> <div class="table_right"> {$email} </div> </div> <div class="table"> <div class="table_left"> Birthday: </div> <div class="table_right"> {$birthday} </div> </div> <div class="table"> <div class="table_left"> Gender: </div> <div class="table_right"> {$gender} </div>
  • 9. </div> </html> Các biến cần lấy ở đây là $fulname, $email, $birthday, $gender. Những biến này sẽ được lấy bằng mảng $_POST thông qua form được xây dựng ở file add.html.php. Nội dung của file index.class.php: index.class.php <?php class Createuser_Component_Controller_Admincp_Index extends Phpfox_Component { public function process() { $this->template()->assign(array( 'fulname' => $_POST['full_name'], 'email' => $_POST['email'], 'password' => md5($_POST['password']), 'birthday' => $month . $_POST['day'] . $_POST['year'], 'gender' => $_POST['gender'] )); } } ?> Đến đây ta sẽ test thử việc hiển thị thông tin người dùng. Truy nhập theo đường dẫn http://localhost/phpFox-3.5.1/upload/index.php?do=/admincp/createuser/add/ hoặc đăng nhập vào AdminCP, truy nhập vào đường dẫn Module ≫ Createuser ≫ Add new, nhập đầy đủ thông tin vào form sau: Click Submit và hệ thống sẽ tự động điều hướng đến link http://localhost/phpFox3.5.1/upload/index.php?do=/admincp/createuser/index/:
  • 10. Insert thông tin người dùng vào cơ sở dữ liệu Để truy nhập và thực hiện các phương thức lên cơ sở dữ liệu, tôi sẽ tạo một service extends từ Phpfox_Service. File service này nằm trên đường dẫn: modulecreateuserincludeservicecreateuser.class.php Phpfox quy định mỗi module chỉ có một service duy nhất để thao tác với cơ sở dữ liệu và chỉ có tên dạng module_name.class.php. Nội dung của file createuser.class.php: createuser.class.php <?php class Createuser_Service_Createuser extends Phpfox_Service { public function insert_user() { $month = $_POST['month']; switch ($month) { case 'January': $month = '01'; break; case 'February': $month = '02'; break; case 'March': $month = '03'; break; case 'April': $month = '04'; break; case 'May': $month = '05'; break; case 'June': $month = '06'; break; case 'July': $month = '07'; break; case 'August': $month = '08'; break; case 'September': $month = '09'; break; case 'October': $month = 10; break; case 'November': $month = 11; break; case 'December': $month = 12; break; } $insert = Phpfox::getLib('database')->insert('phpfox_user', array(
  • 11. 'user_group_id' => '2', 'full_name' => $_POST['full_name'], 'email' => $_POST['email'], 'password' => md5($_POST['password']), 'birthday' => $month . $_POST['day'] . $_POST['year'], 'gender' => $_POST['gender'] )); return $insert; } } ?> Tên lớp vẫn tuân thủ theo định dạng được định nghĩa ở trên. Do giá trị $month ban đầu ở dạng chữ mà không phải dạng số, trong khi dạng hiển thị birthday trong cơ sở dữ liệu là mmddyyyy, nên ta sẽ chuyển giá trị $month từ dạng chữ sang dạng số cho phù hợp. Có 2 cách để thực hiện insert vào cơ sở dữ liệu: $this→database()→insert(‘table_name’, array(‘collumn_name_1’ =>‘value_1’, ‘collumn_name_2’ => ‘value_2’, …)); Phpfox::getLib('database')->insert(‘table_name’, array(‘collumn_name_1’ =>‘value_1’, ‘collumn_name_2’ => ‘value_2’, …)); ở đó column_name_i là tên cột thứ i, còn value_i là giá trị của cột tương ứng. Tiếp theo chúng ta sẽ thực thi service này. Yêu cầu là click nút Submit thì service này cũng được thực thi, nên ta sẽ thực hiện việc thực thi này trong phương thức process của file index.class.php. Chúng ta sẽ thêm đoạn code sau trong file index.class.php. Phpfox::getService('createuser')->insert_user(); Phương thức getService nhận tham số là tên module và gọi đến phương thức insert_user() để thực hiện việc insert thông tin người dùng vào cơ sở dữ liệu. Test Chúng ta sẽ thực hiện test với người dùng John Adam ở trên. Đây là ảnh cơ sở dữ liệu trước khi click nút Submit.
  • 12. Sau khi click nút Submit. Chú ý: Do ở đây tôi thực hiện trên localhost nên các đường dẫn đều bắt đầu bằng localhost, nếu bạn tạo module trên server của bạn, hãy thay localhost bằng tên site của bạn trong các đường dẫn mà tôi đưa ra.