- Xây dựng FORM nhập liệu
- Kiểm tra dữ liệu trong FORM này bằng javascript
- Lưu dữ liệu vào database
a. Xây dựng hệ thống nút nhấn
Trong chức năng này chúng ta không cần xây dựng lại hệ thống nút nhấn mà chúng ta sẽ
dùng lại hàm setBookToolBar() có sẵn của tập tin category.php trong thư mục
/com_book/ views
Mở tập tin category.php trong thư mục /com_book/ views thêm vào hàm edit() với nội dung sau: dung sau:
function edit($row){
BookViewCategory::setBookToolBar(); }
Mở tập tin Category.php trong thư mục /com_book/controllers sửa hàm edit() thành: function edit() { function edit() {
JRequest::setVar( 'hidemainmenu', 1 );
BookViewCategory::edit($row);
}
b. Lấy dữ liệu từ Database ra
Mở tập tin Category.php trong thư mục /com_book/controllers sửa hàm edit() thành: function edit() { function edit() {
JRequest::setVar('hidemainmenu', 1);
$cid = JRequest::getVar('cid');
$id = $cid[0];
$row = & JTable::getInstance('Category', 'Table'); $row->load($id);
BookViewCategory::edit($row); }
Giảng viên: Phạm Vũ Khánh 21 Email: vukhanh2212@gmail.com Chúng ta có thể sử dụng lại FORM nhập liệu của chức năng add, nhưng cần một số thay
đổi đối với FORM này
Đưa tập tin my_validate.js vào Joomla. Mở tập tin category.php trong thư mục
/com_book/ views thêm vào hàm edit() với nội dung sau : function edit($row) { function edit($row) {
BookViewCategory::setBookToolBar(); $filename = 'my_validate.js';
$path = JURI::base() . '/components/com_book/js/'; echo JHTML::script($filename, $path);
$lists = JHTML::_('select.booleanlist', 'published', 'class="inputbox"', $row- >published, 'Publish', 'Unpublish');
require_once( TEMPLATE_VIEW . DS . 'edit.php'); }
(Chú ý: Những đoạn mã có đánh dấu mà xanh nhạt là sự khác biệt giữa 2 hàm edit() và add())
Tạo tập tin edit.php trong thư mục /com_book/views/templates/category/ với nội dung: <script language="javascript" type="text/javascript"> <script language="javascript" type="text/javascript">
<!--
function submitbutton(pressbutton) { var form = document.adminForm; if (pressbutton == 'cancel') { submitform( pressbutton ); return; } // do field validation if (myLengthRestriction(form.category,3,100) == false) {
alert( "<?php echo JText::_('Category: String length must 3 to 100 charaters.', true); ?>" );
}else if (myIsNumeric(form.ordering) == false) {
alert( "<?php echo JText::_('Ordering is must number.', true); ?>" ); }else{ submitform( pressbutton ); } } //--> </script>
<form action="" method="post" enctype="multipart/form-data" name="adminForm"> <table width="100%" class="admintable">
<tr>
<td width="150" class="key">Category</td> <td >
<label>
<input type="text" name="category" id="category" value="<?php echo $row->category;?>" style="width: 300px;" /> * </label> </td> </tr> <tr> <td class="key">Ordering</td>
<td><input type="text" name="ordering" id="ordering" value="<?php echo $row- >ordering;?>" style="width: 50px;" /></td> </tr> <tr> <td class="key">Published?</td> <td><?php echo $lists; ?></td> </tr> </table>
<input type="hidden" name="option" value="com_book" /> <input type="hidden" name="task" value="" />
Giảng viên: Phạm Vũ Khánh 22 Email: vukhanh2212@gmail.com
</form>
(Chú ý: Những đoạn mã có đánh dấu mà xanh nhạt là sự khác biệt giữa 2 trang edit.php và add.php)
Lưu dữ liệu vào Database. Mở tập tin category.php trong thư mục /com_book/controllers
sửa hàm save() thành: function save() { function save() {
global $mainframe;
$task = $this->getTask();
$id = JRequest::getVar('id', 0, 'POST', 'INT');
//Lay thong tin cua User hien tai $user = & JFactory::getUser();
//Khoi tao doi tuong TableCategory
$row = & JTable::getInstance('Category', 'Table');
//Gan cac gia tri duoc POST qua vao doi tuong
$row->category = JRequest::getVar('category', '', 'POST', 'STRING'); if ($id == 0) {
$row->created_by = $user->id;
$row->created = date("Y-m-d h:i:s", time()); } else {
$row->id = $id;
$row->modified_by = $user->id;
$row->modified = date("Y-m-d h:i:s", time()); }
$row->ordering = JRequest::getVar('ordering', 10, 'POST', 'INT'); $row->published = JRequest::getVar('published', 0, 'POST', 'INT');
if (!$row->store()) {
$error = $row->getErrorMsg();
$mainframe->redirect('index.php?option=com_book', $error); } else {
if ($task == 'save') {
$mainframe->redirect('index.php?option=com_book', 'Message Saved'); } else {
$mainframe->redirect('index.php?option=com_book&task=edit&cid[]=' . $row- >id, 'Message Saved');
} } }
Giảng viên: Phạm Vũ Khánh 1 Email: vukhanh2212@gmail.com
Joomla! Programming Book shopping component Book shopping component
Chương 3: Xây dựng Book controller
1. Xác định các chức năng (task) trong Category
2. Xây dựng hệ thống hàm xử lý các chức năng của Category 3. Xây dựng chức năng hiển thị category (task: show) 3. Xây dựng chức năng hiển thị category (task: show) 4. Đăng ký các chức năng xử lý trong Controller
5. Xây dựng chức năng publish & unpublish category (task: publish – unpublish) 6. Xây dựng chức năng delete (task: remove) 6. Xây dựng chức năng delete (task: remove)
7. Xây dựng chức năng thêm một category (task: add – save) 8. Xây dựng chức năng hủy nhiệm vụ (task: cancel) 8. Xây dựng chức năng hủy nhiệm vụ (task: cancel)
9. Xây dựng chức năng chỉnh sửa một category (task: edit – save - apply )
Giáo trình: Joomla! Programming Chuyên đề: Book shopping component Chuyên đề: Book shopping component
Biên soạn: Phạm Vũ Khánh Email: vukhanh2212@gmail.com Email: vukhanh2212@gmail.com
Điện thoại: 0908.893326 Website: www.zend.vn Website: www.zend.vn
Giảng viên: Phạm Vũ Khánh 2 Email: vukhanh2212@gmail.com
1. Xác định task trong BookControllerCategory class
Task Vấn đề xử lý
show Hiển thị các book category. Trong quá trình hiển thị sẽ có nhiều cách hiển thị khác nhau như: hiển thị khác nhau như: