การใส่ปุ่มให้กับแถวของตาราง DataTable
// ตาราง
$table = new DataTable(array(
.................
/* ตั้งค่าการกระทำของของตัวเลือกต่างๆ ด้านล่างตาราง ซึ่งจะใช้ร่วมกับการขีดถูกเลือกแถว */
'action' => 'index.php/demo/model/table/action',
'actionCallback' => 'dataTableActionCallback',
/* ปุ่มแสดงในแต่ละแถว */
'buttons' => array(
'delete' => array(
'class' => 'icon-delete button delete',
'id' => ':id',
'title' => 'ลบ',
),
array(
'class' => 'icon-edit button green',
'href' => $uri->createBackUri(array('module' => 'demo', 'page' => 'form', 'id' => ':id')),
'text' => 'แก้ไข',
),
),
));
ปุ่มที่มี href จะเป็นลิงค์สำหรับเรียกไปยัง URL ที่ต้องการ โดยที่ในลิงค์สามารถใส่ข้อมูลที่มาจากข้อมูลของแต่ละแถวได้โดยใช้ : ตามด้วยชื่อคอลัมน์ เช่น :id หมายถึงจะเอาข้อมูลจากคอลัมน์ id มาใส่ตรงนี้ ปุ่มที่เป็นลิงค์ไม่จำเป็นต้องมี key ของแอเรย์
array(
'class' => 'icon-edit button green',
'href' => $uri->createBackUri(array('module' => 'demo', 'page' => 'form', 'id' => ':id')),
'text' => 'แก้ไข',
),
ส่วนปุ่มที่ไม่มี href จะถูกส่งไปยัง URL ที่กำหนดโดย property action ของ DataTable โดยพารามิเตอร์ที่ส่งไป จะมี key ของแอเรย์ และ id ของปุ่ม (ต้องกำหนดค่าทั้งสองรายการนี้เสมอ)
'delete' => array(
'class' => 'icon-delete button delete',
'id' => ':id',
'title' => 'ลบ',
),
ส่วนการรับค่าจากตารางเมื่อกดปุ่ม จะถูกส่งไปตาม property action ของ DataTable คือ index.php/demo/model/table/action หรือไฟล์ modules/demo/models/table.php หรือคลาส \Demo\Table\Model::action() ที่ method action
/**
* รับค่าจากตาราง (table.php).
*
* @param Request $request
*/
public function action(Request $request)
{
$ret = array();
// session, referer
if ($request->initSession() && $request->isReferer()) {
// รับค่าจากการ POST
$action = $request->post('action')->toString();
$id = $request->post('id')->toInt();
print_r($_POST);
}
if (!empty($ret)) {
// คืนค่า JSON
echo json_encode($ret);
}
}
สามารถดูตัวอย่างคำสั่งได้ที่โปรเจ็ค adminframework นะครับ หรือโปรเจ็คอื่นๆก็ได้ มีแทบทุกโปรเจ็ค