Lấy dự liệu từ database ra

Một phần của tài liệu giáo trình joomla 1.5 Toàn tập (Trang 31 - 35)

- 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 liu 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ú ý: Nhng đon mã có đánh du mà xanh nht là s khác bit gia 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ú ý: Nhng đon mã có đánh du mà xanh nht là s khác bit gia 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 dng h thng hàm x lý các chc năng ca 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 dng chc 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 dng chc năng hy nhim v (task: cancel) 8. Xây dng chc năng hy nhim 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ư:

Một phần của tài liệu giáo trình joomla 1.5 Toàn tập (Trang 31 - 35)