การใส่ปุ่มให้กับแถวของตาราง DataTable
ในตารางที่สร้างจาก DataTable มีคำสั่งสำหรับสร้างปุ่ม ในแต่ละแถว ที่ property buttons ซึ่งเป็นแอเรย์เก็บรายการของปุ่ม ดังโค้ดตัวอย่างด้านล่าง
ปุ่มที่มี href จะเป็นลิงค์สำหรับเรียกไปยัง URL ที่ต้องการ โดยที่ในลิงค์สามารถใส่ข้อมูลที่มาจากข้อมูลของแต่ละแถวได้โดยใช้ : ตามด้วยชื่อคอลัมน์ เช่น :id หมายถึงจะเอาข้อมูลจากคอลัมน์ id มาใส่ตรงนี้ ปุ่มที่เป็นลิงค์ไม่จำเป็นต้องมี key ของแอเรย์
ส่วนปุ่มที่ไม่มี href จะถูกส่งไปยัง URL ที่กำหนดโดย property action ของ DataTable โดยพารามิเตอร์ที่ส่งไป จะมี key ของแอเรย์ และ id ของปุ่ม (ต้องกำหนดค่าทั้งสองรายการนี้เสมอ)
ส่วนการรับค่าจากตารางเมื่อกดปุ่ม จะถูกส่งไปตาม property action ของ DataTable คือ index.php/demo/model/table/action หรือไฟล์ modules/demo/models/table.php หรือคลาส \Demo\Table\Model::action() ที่ method action
สามารถดูตัวอย่างคำสั่งได้ที่โปรเจ็ค adminframework นะครับ หรือโปรเจ็คอื่นๆก็ได้ มีแทบทุกโปรเจ็ค
// ตาราง
$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 นะครับ หรือโปรเจ็คอื่นๆก็ได้ มีแทบทุกโปรเจ็ค