SlideShare a Scribd company logo
Thêm(insert) dữ liệu vào database trong ZF2
Xem 'Bài 9 - Upload file và Multi upload files trong ZF2' trước khi thực hành bài này
- Trước khi chúng ta xây dựng chức năng thêm một dòng vào database trong Zend Framework 2.0. Chúng
ta mở database ‘zfbasic’ trong localhost:8000/phpmyadmin/ thêm vào dòng lệnh sau để tạo ra một cột
mới có tên ‘picture’.
ALTER TABLE `picture` ADD `hehe` VARCHAR( 255 ) NULL DEFAULT NULL AFTER `username` ;
- Ở trong phần này chúng ta sẽ phải có một FORM để người sử dụng nhập liệu và sau đó nhấn nút
‘Submit’ để gửi dữ liệu đến máy chủ vì vậy chúng ta cần tạo ra một đối tượng ZendFormForm. Lúc này
chúng ta sẽ tạo ra một tập tin mới /module/Admin/src/Admin/Form/UserForm.php với nội dung sau:
<?php
namespace AdminForm;
use ZendFormForm;
class UserForm extends Form
{
public function __construct($name = null)
{
parent::__construct('appForm');
//Khai báo phương thức sử dụng trong FORM
$this->setAttribute('method', 'post');
//Khai báo kiểu dữ liệu được gửi lên server
$this->setAttribute('enctype','multipart/form-data');
//Khai báo phần tử textbox 'username'
$this->add(array(
'name' => 'username',
'attributes' => array(
'type' => 'text',
'required' => 'required',
'class' => 'txtInput txtMedium'
),
'options' => array(
'label' => 'Username:',
),
));
//Khai báo phần tử textbox 'username'
$this->add(array(
'name' => 'picture',
'attributes' => array(
'type' => 'file',
//'required' => 'required',
'class' => 'txtInput txtMedium'
),
'options' => array(
'label' => 'Avatar:',
),
));
//Khai báo phần tử textbox 'email'
$this->add(array(
'name' => 'email',
'attributes' => array(
'type' => 'text',
'required' => 'required',
'class' => 'txtInput txtMedium'
),
'options' => array(
'label' => 'Email:',
),
));
//Khai báo phần tử textbox 'password'
$this->add(array(
'name' => 'password',
'attributes' => array(
'type' => 'password',
'required' => 'required',
'class' => 'txtInput txtMedium'
),
'options' => array(
'label' => 'Password:',
),
));
//Khai báo phần tử selectbox 'group'
$this->add(array(
'name' => 'group',
'type' => 'ZendFormElementSelect',
'attributes' => array(
'class' => 'txtInput txtMedium',
),
'options' => array(
'label' => 'Group name:',
'value_options' => array(
'admin' => 'Admin group',
'member' => 'Member group',
),
),
));
//submit
$this->add(array(
'name' => 'submit',
'attributes' => array(
'type' => 'submit',
'value' => 'Send data'
),
));
}
}
- Tiếp theo chúng ta sẽ tạo một ACTION mới trong tập
tin /module/Admin/src/Admin/Controller/IndexController.php tên addAction() có nội dung như sau:
public function addAction(){
//Khởi tạo đối tượng UserForm
$form = new UserForm();
//Truyền đối tượng UserForm vào đối tượng ViewModel
$viewModel = new ViewModel(array('form' => $form));
//Đư đối tượng ViewModel ra ngoài VIEW
return $viewModel;
}
- Sau khi chúng ta có ACTION thì chúng ta sẽ tạo VIEW để hiển thị FORM của ACTION này. Tạo tập
tin /module/Admin/view/admin/index/add.phtml với nội dung sau:
<h1>Them mot thanh vien moi</h1>
<?php
//Lấy đối tượng AdminFormUserForm từ trong VIEW ra
$form = $this->form;
$form->prepare();
?>
<!-- Tạo thẻ <form...> và các giá trị thuộc tính của thẻ này -->
<?php echo $this->form()->openTag($form);?>
<ul>
<li>
<span><?php echo $this->formLabel($form->get('username')); ?></span>
<?php echo $this->formElement($form->get('username')); ?>
</li>
<li>
<span><?php echo $this->formLabel($form->get('picture')); ?></span>
<?php echo $this->formElement($form->get('picture')); ?>
</li>
<li>
<span><?php echo $this->formLabel($form->get('email')); ?></span>
<?php echo $this->formElement($form->get('email')); ?>
</li>
<li>
<span><?php echo $this->formLabel($form->get('password')); ?></span>
<?php echo $this->formElement($form->get('password')); ?>
</li>
<li>
<span><?php echo $this->formLabel($form->get('group')); ?></span>
<?php echo $this->formElement($form->get('group')); ?>
</li>
<li>
<!--Tạo nút Submit -->
<?php echo $this->formElement($form->get('submit'));?>
</li>
</ul>
<!-- Đóng thẻ </form> -->
<?php echo $this->form()->closeTag() ?>
- Bây giờ chúng ta hãy chạy thử đường dẫn sau: localhost:8000/zf2basic/public/admin/index/add/
- Chúng ta thấy trong FORM có một phần tử để upload file vì vậy chúng ta sẽ xây dựng một phương thức
trong tập tin /module/Admin/src/Admin/Form/UserForm.php để upload file lên máy chủ có nội dung như
sau:
public function upload($files = array(),$file_path = ''){
$fileName = '';
if(count($files) != 0 && $file_path != ''){
$fileName = $files['picture']['name'];
$uploadObj = new ZendFileTransferAdapterHttp();
$uploadObj->setDestination($file_path);
$uploadObj->receive($fileName);
}
return $fileName;
}
- Bây giờ chúng ta sẽ tạo ra thư mục mới tên /users trong thự mục /public/files để lưu trữ hình ảnh upload
lên từ FORM này
- Tiếp theo chúng ta sẽ xây dựng một phương thức tên saveData() trong tập tin MODEL để đưa dữ liệu
vào bảng ‘user’ của database . Mở tập tin /module/Admin/src/Admin/Model/UserTable.php với nội dung
sau:
public function saveData($arrParam = array(), $options = array()){
//Loại bỏ phần tử 'submit' trong mảng được POST qua
unset($arrParam['submit']);
//Nếu $options['task'] có giá trị 'add' thì thêm một record mới trong database
if($options['task'] == 'add'){
$this->tableGateway->insert($arrParam);
}
}
- Sau khi đã có phương thức saveData() trong MODEL bây giờ chúng ta sẽ hoàn thiện addAction() để đưa
gửi dữ liệu từ FORM vào database. Mở tập
tin /module/Admin/src/Admin/Controller/IndexController.php sửa lại addAction() như sau:
public function addAction(){
//Khởi tạo đối tượng UserForm
$form = new UserForm();
//Truyền đối tượng UserForm vào đối tượng ViewModel
$viewModel = new ViewModel(array('form' => $form));
//Lấy tất cả các giá trị được truyền qua từ FORM
$request = $this->getRequest();
if ($request->isPost()) {
//Lấy mảng thông tin được gửi từ FORM lên
$arrParam = $request->getPost()->toArray();
//Lấy mảng thông tin của file gửi lên
$files = $request->getFiles()->toArray();
//Tạo một phần tử 'picture' trong mảng $arrParam
$arrParam['picture'] = '';
//Trong trường hợp có tập tin gửi lên
//thì gọi đến phương thức upload trong đối tượng UserForm
if(!empty($files['picture']['name'])){
//Lấy tên của tập tin upload đưa vào phần tử 'picture' trong mảng $arrParam
$arrParam['picture'] = $form->upload($files,FILES_PATH . '/users');
}
//Gọi đối tượng UserTable đã khai báo trong đối tượng service
$userTable = $this->getServiceLocator()->get('AdminModelUserTable');
//Truyền mảng dự liệu $arrParam vào phương thức savaData
//của đối tượng AdminModelUserTable
$userTable->saveData($arrParam,array('task'=>'add'));
//Sau khi đưa dữ liệu vào datbase chúng trả nó về trang hiển thị dữ liệu
return $this->redirect()->toRoute('admin', array(
'controller' => 'index',
'action' => 'index'
));
}
//Đư đối tượng ViewModel ra ngoài VIEW
return $viewModel;
}
- Bây giờ chúng ta hãy chạy thử đường dẫn sau: localhost:8000/zf2basic/public/admin/index/add/ nhập
đầy đủ dữ liệu vào nhấn nút ‘Send data’ để hoàn tất quá trình lưu dữ liệu vào database và sau đó chúng ta
hãy kiểm tra xem tập tin hình đã có trong thư mục /public/files/users hay chưa
Download source here: http://www.zend.vn/download/pictures/zend-framework-2/07-zf-them-du-lieu-
vao-db/07-zf-them-du-lieu-vao-db.zip
Để tìm hiểu kỹ hơn các bạn hãy truy cập:
Website: www.zend.vn
Facebook: facebook.com/zendvngroup
Youtube: youtube.com/user/luutruonghailan

More Related Content

What's hot

Web203 slide 5
Web203   slide 5Web203   slide 5
Web203 slide 5
tuanduongcntt
 
Web301 slide 4
Web301   slide 4Web301   slide 4
Web301 slide 4
tuanduongcntt
 
Web301 slide 2
Web301   slide 2Web301   slide 2
Web301 slide 2
tuanduongcntt
 
The First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupThe First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress Meetup
KhanhPham
 
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
MasterCode.vn
 
Web201 slide 6
Web201   slide 6Web201   slide 6
Web201 slide 6
tuanduongcntt
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHP
elearninglabvn
 
Web301 slide 3
Web301   slide 3Web301   slide 3
Web301 slide 3
tuanduongcntt
 
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng webBài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
MasterCode.vn
 
Web301 slide 6
Web301   slide 6Web301   slide 6
Web301 slide 6
tuanduongcntt
 
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
KhanhPham
 
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
MasterCode.vn
 
tao module joomla 1.5
tao module  joomla 1.5tao module  joomla 1.5
tao module joomla 1.5
dvms
 
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong WordpressTài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
KhanhPham
 
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
MasterCode.vn
 
Web201 slide 7
Web201   slide 7Web201   slide 7
Web201 slide 7
tuanduongcntt
 
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
KhanhPham
 
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPTBài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
MasterCode.vn
 
Web201 slide 2
Web201   slide 2Web201   slide 2
Web201 slide 2
tuanduongcntt
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
MasterCode.vn
 

What's hot (20)

Web203 slide 5
Web203   slide 5Web203   slide 5
Web203 slide 5
 
Web301 slide 4
Web301   slide 4Web301   slide 4
Web301 slide 4
 
Web301 slide 2
Web301   slide 2Web301   slide 2
Web301 slide 2
 
The First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress MeetupThe First 2015 Saigon WordPress Meetup
The First 2015 Saigon WordPress Meetup
 
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
 
Web201 slide 6
Web201   slide 6Web201   slide 6
Web201 slide 6
 
E learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHPE learning lab - Tim hieu Cake PHP
E learning lab - Tim hieu Cake PHP
 
Web301 slide 3
Web301   slide 3Web301   slide 3
Web301 slide 3
 
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng webBài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
Bài 6 Tải file và hình ảnh lên website - Xây dựng ứng dụng web
 
Web301 slide 6
Web301   slide 6Web301   slide 6
Web301 slide 6
 
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
Học lập trình Wordpress - bài 2 - Tìm hiểu cấu trúc và cấu hình nâng cao
 
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
 
tao module joomla 1.5
tao module  joomla 1.5tao module  joomla 1.5
tao module joomla 1.5
 
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong WordpressTài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
Tài liệu lập trình Wordpress - bài 5 - Action và Action hook trong Wordpress
 
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 7
Web201   slide 7Web201   slide 7
Web201 slide 7
 
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
 
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPTBài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
Bài 6 Lập trình PHP (phần 4) Làm việc với cookie và session - Giáo trình FPT
 
Web201 slide 2
Web201   slide 2Web201   slide 2
Web201 slide 2
 
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPTBài 3 Lập trình PHP (phần 1) - Giáo trình FPT
Bài 3 Lập trình PHP (phần 1) - Giáo trình FPT
 

Similar to Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10

Devwork.vn Tài liệu lập trình PHP Laravel
Devwork.vn Tài liệu lập trình PHP LaravelDevwork.vn Tài liệu lập trình PHP Laravel
Devwork.vn Tài liệu lập trình PHP Laravel
Devwork
 
Giới thiệu Yii Framework 1
Giới thiệu Yii Framework 1Giới thiệu Yii Framework 1
Giới thiệu Yii Framework 1
Nguyễn Tuấn Quỳnh
 
All zend
All zendAll zend
All zendkuetli
 
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
dvms
 
Them,xoa,sua data trong xml
Them,xoa,sua data trong xmlThem,xoa,sua data trong xml
Them,xoa,sua data trong xmlNguyễn Linh
 
Php03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongPhp03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongconglongit90
 
Bài 5 Hướng dẫn xây dựng Extension
Bài 5 Hướng dẫn xây dựng ExtensionBài 5 Hướng dẫn xây dựng Extension
Bài 5 Hướng dẫn xây dựng Extension
MasterCode.vn
 
Tailieuonline.tk joomla-viet-component
 Tailieuonline.tk joomla-viet-component Tailieuonline.tk joomla-viet-component
Tailieuonline.tk joomla-viet-componentzzbabyloveszz
 
C5. Model, DataSharing.pdf
C5. Model, DataSharing.pdfC5. Model, DataSharing.pdf
C5. Model, DataSharing.pdf
HongVnHngCNTT1303
 
PHP Regular expressions
PHP Regular expressionsPHP Regular expressions
PHP Regular expressions
Phạm Tùng Lâm
 
Chương 5: PHP&MYSQL
Chương 5: PHP&MYSQLChương 5: PHP&MYSQL
Chương 5: PHP&MYSQL
Hồ Lợi
 
Create easymoduleinphpfox
Create easymoduleinphpfoxCreate easymoduleinphpfox
Create easymoduleinphpfoxEntu Di
 
Web301 slide 5
Web301   slide 5Web301   slide 5
Web301 slide 5
tuanduongcntt
 
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng webBài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
MasterCode.vn
 
The Art of Readable Code - DongPV
The Art of Readable Code - DongPVThe Art of Readable Code - DongPV
The Art of Readable Code - DongPV
Đông Đô
 

Similar to Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10 (20)

Devwork.vn Tài liệu lập trình PHP Laravel
Devwork.vn Tài liệu lập trình PHP LaravelDevwork.vn Tài liệu lập trình PHP Laravel
Devwork.vn Tài liệu lập trình PHP Laravel
 
Zend db
Zend dbZend db
Zend db
 
Giới thiệu Yii Framework 1
Giới thiệu Yii Framework 1Giới thiệu Yii Framework 1
Giới thiệu Yii Framework 1
 
All zend
All zendAll zend
All zend
 
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
TÀI LIỆU HƯỚNG VIẾT MODULE VÀ WEBSERVICE CHO MAGENTO 1.7
 
Them,xoa,sua data trong xml
Them,xoa,sua data trong xmlThem,xoa,sua data trong xml
Them,xoa,sua data trong xml
 
Php03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdongPhp03 php trong-laptrinhwebdong
Php03 php trong-laptrinhwebdong
 
Bài 5 Hướng dẫn xây dựng Extension
Bài 5 Hướng dẫn xây dựng ExtensionBài 5 Hướng dẫn xây dựng Extension
Bài 5 Hướng dẫn xây dựng Extension
 
Joo
JooJoo
Joo
 
Tailieuonline.tk joomla-viet-component
 Tailieuonline.tk joomla-viet-component Tailieuonline.tk joomla-viet-component
Tailieuonline.tk joomla-viet-component
 
C5. Model, DataSharing.pdf
C5. Model, DataSharing.pdfC5. Model, DataSharing.pdf
C5. Model, DataSharing.pdf
 
PHP Regular expressions
PHP Regular expressionsPHP Regular expressions
PHP Regular expressions
 
Chương 5: PHP&MYSQL
Chương 5: PHP&MYSQLChương 5: PHP&MYSQL
Chương 5: PHP&MYSQL
 
Jquery
JqueryJquery
Jquery
 
Create easymoduleinphpfox
Create easymoduleinphpfoxCreate easymoduleinphpfox
Create easymoduleinphpfox
 
Bài 6: Working with DATA
Bài 6: Working with DATABài 6: Working with DATA
Bài 6: Working with DATA
 
SQL injection
SQL injectionSQL injection
SQL injection
 
Web301 slide 5
Web301   slide 5Web301   slide 5
Web301 slide 5
 
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng webBài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
Bài 5 Chức năng gửi email cho website - Xây dựng ứng dụng web
 
The Art of Readable Code - DongPV
The Art of Readable Code - DongPVThe Art of Readable Code - DongPV
The Art of Readable Code - DongPV
 

More from KhanhPham

Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng ViệtMysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
KhanhPham
 
Giáo trình thiết kế web - Thiết kế web với Dreamweaver
Giáo trình thiết kế web - Thiết kế web với DreamweaverGiáo trình thiết kế web - Thiết kế web với Dreamweaver
Giáo trình thiết kế web - Thiết kế web với Dreamweaver
KhanhPham
 
Tự học HTML CSS JS - Khóa học HTML CSS JS chuyên sâu
Tự học HTML CSS JS - Khóa học HTML CSS JS chuyên sâuTự học HTML CSS JS - Khóa học HTML CSS JS chuyên sâu
Tự học HTML CSS JS - Khóa học HTML CSS JS chuyên sâu
KhanhPham
 
Học Zend Framework - Khóa học lập trình Zend Framework
Học Zend Framework - Khóa học lập trình Zend FrameworkHọc Zend Framework - Khóa học lập trình Zend Framework
Học Zend Framework - Khóa học lập trình Zend Framework
KhanhPham
 
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
KhanhPham
 
Giáo trình PHP căn bản - Lọc dữ liệu với PHP Filter (CH003 Bài 5)
Giáo trình PHP căn bản - Lọc dữ liệu với PHP Filter (CH003 Bài 5)Giáo trình PHP căn bản - Lọc dữ liệu với PHP Filter (CH003 Bài 5)
Giáo trình PHP căn bản - Lọc dữ liệu với PHP Filter (CH003 Bài 5)
KhanhPham
 
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)
KhanhPham
 
Giao trinh PHP nang cao - Các hàm xử lý file trong PHP (CH003 Bài 2)
Giao trinh PHP nang cao - Các hàm xử lý file trong PHP (CH003 Bài 2)Giao trinh PHP nang cao - Các hàm xử lý file trong PHP (CH003 Bài 2)
Giao trinh PHP nang cao - Các hàm xử lý file trong PHP (CH003 Bài 2)
KhanhPham
 
Giáo trình PHP nâng cao - Biểu thức chính qui trong PHP Regex (CH003 Bài 1)
Giáo trình PHP nâng cao - Biểu thức chính qui trong PHP Regex (CH003 Bài 1)Giáo trình PHP nâng cao - Biểu thức chính qui trong PHP Regex (CH003 Bài 1)
Giáo trình PHP nâng cao - Biểu thức chính qui trong PHP Regex (CH003 Bài 1)
KhanhPham
 
Lap trình web PHP - Các hàm xử lý số number trong PHP (CH002 Bài 3)
Lap trình web PHP - Các hàm xử lý số number trong PHP  (CH002 Bài 3)Lap trình web PHP - Các hàm xử lý số number trong PHP  (CH002 Bài 3)
Lap trình web PHP - Các hàm xử lý số number trong PHP (CH002 Bài 3)
KhanhPham
 
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
KhanhPham
 
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
KhanhPham
 
Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)
Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)
Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)
KhanhPham
 

More from KhanhPham (13)

Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng ViệtMysql Workbench hướng dẫn cài đặt - Video tiếng Việt
Mysql Workbench hướng dẫn cài đặt - Video tiếng Việt
 
Giáo trình thiết kế web - Thiết kế web với Dreamweaver
Giáo trình thiết kế web - Thiết kế web với DreamweaverGiáo trình thiết kế web - Thiết kế web với Dreamweaver
Giáo trình thiết kế web - Thiết kế web với Dreamweaver
 
Tự học HTML CSS JS - Khóa học HTML CSS JS chuyên sâu
Tự học HTML CSS JS - Khóa học HTML CSS JS chuyên sâuTự học HTML CSS JS - Khóa học HTML CSS JS chuyên sâu
Tự học HTML CSS JS - Khóa học HTML CSS JS chuyên sâu
 
Học Zend Framework - Khóa học lập trình Zend Framework
Học Zend Framework - Khóa học lập trình Zend FrameworkHọc Zend Framework - Khóa học lập trình Zend Framework
Học Zend Framework - Khóa học lập trình Zend Framework
 
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
Tai lieu PHP nang cao - Sử dụng Session và Cookie trong php (CH003 Bài 7)
 
Giáo trình PHP căn bản - Lọc dữ liệu với PHP Filter (CH003 Bài 5)
Giáo trình PHP căn bản - Lọc dữ liệu với PHP Filter (CH003 Bài 5)Giáo trình PHP căn bản - Lọc dữ liệu với PHP Filter (CH003 Bài 5)
Giáo trình PHP căn bản - Lọc dữ liệu với PHP Filter (CH003 Bài 5)
 
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)
Giao trinh PHP nang cao - Kỹ thuật đệ qui trong PHP (CH003 Bài 3)
 
Giao trinh PHP nang cao - Các hàm xử lý file trong PHP (CH003 Bài 2)
Giao trinh PHP nang cao - Các hàm xử lý file trong PHP (CH003 Bài 2)Giao trinh PHP nang cao - Các hàm xử lý file trong PHP (CH003 Bài 2)
Giao trinh PHP nang cao - Các hàm xử lý file trong PHP (CH003 Bài 2)
 
Giáo trình PHP nâng cao - Biểu thức chính qui trong PHP Regex (CH003 Bài 1)
Giáo trình PHP nâng cao - Biểu thức chính qui trong PHP Regex (CH003 Bài 1)Giáo trình PHP nâng cao - Biểu thức chính qui trong PHP Regex (CH003 Bài 1)
Giáo trình PHP nâng cao - Biểu thức chính qui trong PHP Regex (CH003 Bài 1)
 
Lap trình web PHP - Các hàm xử lý số number trong PHP (CH002 Bài 3)
Lap trình web PHP - Các hàm xử lý số number trong PHP  (CH002 Bài 3)Lap trình web PHP - Các hàm xử lý số number trong PHP  (CH002 Bài 3)
Lap trình web PHP - Các hàm xử lý số number trong PHP (CH002 Bài 3)
 
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
Học PHP online - Các hàm xử lý chuỗi trong PHP ( CH002 - Bài 2.1)
 
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
Học PHP cơ bản - Mảng trong PHP ( CH002 - Bài 1.2)
 
Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)
Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)
Học PHP cơ bản - Tìm hiểu về mảng trong PHP ( CH001 - Bài 1.1)
 

Tài liệu Zend Framework 2 : Thêm dữ liệu vào database trong ZF2 - Bài 10

  • 1. Thêm(insert) dữ liệu vào database trong ZF2 Xem 'Bài 9 - Upload file và Multi upload files trong ZF2' trước khi thực hành bài này - Trước khi chúng ta xây dựng chức năng thêm một dòng vào database trong Zend Framework 2.0. Chúng ta mở database ‘zfbasic’ trong localhost:8000/phpmyadmin/ thêm vào dòng lệnh sau để tạo ra một cột mới có tên ‘picture’. ALTER TABLE `picture` ADD `hehe` VARCHAR( 255 ) NULL DEFAULT NULL AFTER `username` ; - Ở trong phần này chúng ta sẽ phải có một FORM để người sử dụng nhập liệu và sau đó nhấn nút ‘Submit’ để gửi dữ liệu đến máy chủ vì vậy chúng ta cần tạo ra một đối tượng ZendFormForm. Lúc này chúng ta sẽ tạo ra một tập tin mới /module/Admin/src/Admin/Form/UserForm.php với nội dung sau: <?php namespace AdminForm; use ZendFormForm; class UserForm extends Form { public function __construct($name = null) { parent::__construct('appForm'); //Khai báo phương thức sử dụng trong FORM $this->setAttribute('method', 'post'); //Khai báo kiểu dữ liệu được gửi lên server $this->setAttribute('enctype','multipart/form-data'); //Khai báo phần tử textbox 'username' $this->add(array( 'name' => 'username', 'attributes' => array( 'type' => 'text', 'required' => 'required',
  • 2. 'class' => 'txtInput txtMedium' ), 'options' => array( 'label' => 'Username:', ), )); //Khai báo phần tử textbox 'username' $this->add(array( 'name' => 'picture', 'attributes' => array( 'type' => 'file', //'required' => 'required', 'class' => 'txtInput txtMedium' ), 'options' => array( 'label' => 'Avatar:', ), )); //Khai báo phần tử textbox 'email' $this->add(array( 'name' => 'email', 'attributes' => array( 'type' => 'text', 'required' => 'required', 'class' => 'txtInput txtMedium' ), 'options' => array( 'label' => 'Email:', ), )); //Khai báo phần tử textbox 'password' $this->add(array( 'name' => 'password', 'attributes' => array( 'type' => 'password', 'required' => 'required', 'class' => 'txtInput txtMedium' ), 'options' => array( 'label' => 'Password:', ), )); //Khai báo phần tử selectbox 'group' $this->add(array( 'name' => 'group', 'type' => 'ZendFormElementSelect', 'attributes' => array( 'class' => 'txtInput txtMedium', ), 'options' => array( 'label' => 'Group name:', 'value_options' => array( 'admin' => 'Admin group', 'member' => 'Member group', ), ),
  • 3. )); //submit $this->add(array( 'name' => 'submit', 'attributes' => array( 'type' => 'submit', 'value' => 'Send data' ), )); } } - Tiếp theo chúng ta sẽ tạo một ACTION mới trong tập tin /module/Admin/src/Admin/Controller/IndexController.php tên addAction() có nội dung như sau: public function addAction(){ //Khởi tạo đối tượng UserForm $form = new UserForm(); //Truyền đối tượng UserForm vào đối tượng ViewModel $viewModel = new ViewModel(array('form' => $form)); //Đư đối tượng ViewModel ra ngoài VIEW return $viewModel; } - Sau khi chúng ta có ACTION thì chúng ta sẽ tạo VIEW để hiển thị FORM của ACTION này. Tạo tập tin /module/Admin/view/admin/index/add.phtml với nội dung sau: <h1>Them mot thanh vien moi</h1> <?php //Lấy đối tượng AdminFormUserForm từ trong VIEW ra $form = $this->form; $form->prepare(); ?> <!-- Tạo thẻ <form...> và các giá trị thuộc tính của thẻ này --> <?php echo $this->form()->openTag($form);?> <ul> <li> <span><?php echo $this->formLabel($form->get('username')); ?></span> <?php echo $this->formElement($form->get('username')); ?> </li> <li> <span><?php echo $this->formLabel($form->get('picture')); ?></span> <?php echo $this->formElement($form->get('picture')); ?> </li> <li> <span><?php echo $this->formLabel($form->get('email')); ?></span> <?php echo $this->formElement($form->get('email')); ?> </li> <li> <span><?php echo $this->formLabel($form->get('password')); ?></span> <?php echo $this->formElement($form->get('password')); ?>
  • 4. </li> <li> <span><?php echo $this->formLabel($form->get('group')); ?></span> <?php echo $this->formElement($form->get('group')); ?> </li> <li> <!--Tạo nút Submit --> <?php echo $this->formElement($form->get('submit'));?> </li> </ul> <!-- Đóng thẻ </form> --> <?php echo $this->form()->closeTag() ?> - Bây giờ chúng ta hãy chạy thử đường dẫn sau: localhost:8000/zf2basic/public/admin/index/add/ - Chúng ta thấy trong FORM có một phần tử để upload file vì vậy chúng ta sẽ xây dựng một phương thức trong tập tin /module/Admin/src/Admin/Form/UserForm.php để upload file lên máy chủ có nội dung như sau: public function upload($files = array(),$file_path = ''){ $fileName = ''; if(count($files) != 0 && $file_path != ''){ $fileName = $files['picture']['name']; $uploadObj = new ZendFileTransferAdapterHttp(); $uploadObj->setDestination($file_path); $uploadObj->receive($fileName); } return $fileName; } - Bây giờ chúng ta sẽ tạo ra thư mục mới tên /users trong thự mục /public/files để lưu trữ hình ảnh upload lên từ FORM này - Tiếp theo chúng ta sẽ xây dựng một phương thức tên saveData() trong tập tin MODEL để đưa dữ liệu
  • 5. vào bảng ‘user’ của database . Mở tập tin /module/Admin/src/Admin/Model/UserTable.php với nội dung sau: public function saveData($arrParam = array(), $options = array()){ //Loại bỏ phần tử 'submit' trong mảng được POST qua unset($arrParam['submit']); //Nếu $options['task'] có giá trị 'add' thì thêm một record mới trong database if($options['task'] == 'add'){ $this->tableGateway->insert($arrParam); } } - Sau khi đã có phương thức saveData() trong MODEL bây giờ chúng ta sẽ hoàn thiện addAction() để đưa gửi dữ liệu từ FORM vào database. Mở tập tin /module/Admin/src/Admin/Controller/IndexController.php sửa lại addAction() như sau: public function addAction(){ //Khởi tạo đối tượng UserForm $form = new UserForm(); //Truyền đối tượng UserForm vào đối tượng ViewModel $viewModel = new ViewModel(array('form' => $form)); //Lấy tất cả các giá trị được truyền qua từ FORM $request = $this->getRequest(); if ($request->isPost()) { //Lấy mảng thông tin được gửi từ FORM lên $arrParam = $request->getPost()->toArray(); //Lấy mảng thông tin của file gửi lên $files = $request->getFiles()->toArray(); //Tạo một phần tử 'picture' trong mảng $arrParam $arrParam['picture'] = ''; //Trong trường hợp có tập tin gửi lên //thì gọi đến phương thức upload trong đối tượng UserForm if(!empty($files['picture']['name'])){ //Lấy tên của tập tin upload đưa vào phần tử 'picture' trong mảng $arrParam $arrParam['picture'] = $form->upload($files,FILES_PATH . '/users'); } //Gọi đối tượng UserTable đã khai báo trong đối tượng service $userTable = $this->getServiceLocator()->get('AdminModelUserTable'); //Truyền mảng dự liệu $arrParam vào phương thức savaData //của đối tượng AdminModelUserTable $userTable->saveData($arrParam,array('task'=>'add')); //Sau khi đưa dữ liệu vào datbase chúng trả nó về trang hiển thị dữ liệu return $this->redirect()->toRoute('admin', array( 'controller' => 'index', 'action' => 'index'
  • 6. )); } //Đư đối tượng ViewModel ra ngoài VIEW return $viewModel; } - Bây giờ chúng ta hãy chạy thử đường dẫn sau: localhost:8000/zf2basic/public/admin/index/add/ nhập đầy đủ dữ liệu vào nhấn nút ‘Send data’ để hoàn tất quá trình lưu dữ liệu vào database và sau đó chúng ta hãy kiểm tra xem tập tin hình đã có trong thư mục /public/files/users hay chưa Download source here: http://www.zend.vn/download/pictures/zend-framework-2/07-zf-them-du-lieu- vao-db/07-zf-them-du-lieu-vao-db.zip Để tìm hiểu kỹ hơn các bạn hãy truy cập: Website: www.zend.vn Facebook: facebook.com/zendvngroup Youtube: youtube.com/user/luutruonghailan