Posted by phuong.phuong on April 3, 2008 at 2:58am
Viết module node tạo 1 node type ngoài title và body còn có 1 số field khác lưu vào table riêng. Khi edit node làm sao để get data trong table riêng đó lên form? Click link edit chỉ thấy nó get các field mặc định là title và body của node thôi. Phải implement hook nào?
Hix tưởng đơn giản nhưng hông biết làm !!!
Comments
Bạn đã xem
Bạn đã xem node_example.module chưa? Khá chi tiết trong việc implement các hook lên quan đến node/node type:
Thế Hồng
Load "date" data khi edit
<?php
$form['ngay'] = array(
'#type' => 'date',
'#title' => 'Ngay',
'#required' => TRUE,
'#default_value' => array(
'year' => format_date(time(), 'custom', 'Y'),
'month' => format_date(time(), 'custom', 'n'),
'day' => format_date(time(), 'custom', 'j'),
)
);
?>
<?php/**
* Implemenation of hook_prepare
*/
function promotion_prepare(&$node) {
$ngay = $node->ngay;
$node->ngay ['month'] = date('m', $ngay );
$node->ngay ['day'] = date('d', $ngay);
$node->ngay ['year'] = date('Y', $ngay );
}
?>
Trong node module, field ngay được định nghĩa như trên, lúc create thì sẽ hiện ra đúng ngày tháng hiện tại, như khi edit cần fill giá trị trong db thì ko được, nó vẫn hiện ngày tháng hiện tại mặc dù đã gán lại giá trị cho $node->ngay trong hook_prepare. Xin cho ý kiến?
Thật tình là không
Thật tình là không hiểu đoạn #1 bạn viết cái gì nữa!!! Lúc lưu vào CSDL thì lưu ở dạng nào (), Phải biết () mới biết cách bóc tách và trình bày ra.
Thế Hồng
Nói lại vấn đề
Node module.
Trên form mình có dùng kiểu "date".
hook_insert() dùng mktime() để lưu vào DB thành 1 số int.
Vấn đề: khi edit node thì làm sao để load lại đúng ngày tháng lên form ?
(biết hook_load() để get data từ DB rồi nhé)
Lấy cách này dài quá,
Lấy cách này dài quá, người ta thường dùng một textfield field để nhập vào ngày tháng (có module jstools -> calendar hỗ trợ nhập ngày tháng thông qua một popup calendar). Khi lưu thì lưu lại sử dụng hàm strtotime () để đổi chuỗi thành dạng timestamp. Khi trình bày ra thì sử dụng hàm format_date () để trình bày cho đúng style của cấu hình hệ thống/người dùng.
Thế Hồng
Hướng dẫn của jstools
'#attributes' => array('class' => 'jscalendar'),