ถ้าต้องการแก้ไขเงื่อนไขในการสร้างปุ่ม ในโปรแกรมจัดเก็บเอกสาร eDm
คือ เดิมในหน้าแสดงรายการเอกสาร ตรงด้านขวาสุดของตารางจะเป็นปุ่ม ดาวน์โหลด หรือ ปุ่ม ลิ้งค์ และ ปุ่มรายละเอียด ของเอกสาร โดยเงื่อนไขการแสดงปุ่ม ระหว่าง ปุ่มดาวน์โหลด กับ ปุ่มลิ้ง ต้องมีอย่างใดอย่างหนึ่ง จะไม่มีทิ้งสองอย่างไม่ได้ แต่พอดีไปเจอปัญหาที่ว่าบางเอกสารมีข้อความสั้นๆ ไม่จำเป็นต้องมีลิ้งค์ หรือ อะไรต้องดาวน์โหลด สามารถพิมพ์ข้อความลงไปใน Detail ได้เลย ผมก็ได้ตัดเงื่อนไขการตรวจสอบที่ไม่ต้องคีย์ข้อมูลของทั้งไฟล์ดาวน์โหลด และ ลิ้งค์ ออกไปแล้ว โดยไม่ต้องคีย์สองส่วนนี้ก็บันทึกข้อมูลได้ แต่ก็ไปติดเงื่อนไขการแสดงปุ่มที่โปรแกรมต้องโชว์อย่างใดอย่างหนึ่ง ผมเลยขอสอบถามอาจารย์ว่า จะต้องเขียนแก้เงื่อนไขนี้ยังไงครับ โดยถ้าไม่มีข้อมูลของทั้งสองอย่างแล้วไม่ต้องโชว์ ให้เหลือแค่ปุ่มรายละเอียดของเอกสารเท่านั้น ผมก็ได้ลองเขียนแก้โน่นนี่นั่นตามความรู้ที่มีก็ไม่ได้ผล รบกวนอาจารย์ช่วยด้วยนะครับ ไม่รู้ว่าจะเขียนแก้ยังไง ขอบคุณครับ
$btn คือชื่อปุ่ม มาจาก key ของแอเรย์ buttons
$attributes property ของปุ่ม จากตัวอย่างคือการเปลี่ยนปุ่มจาก download เป็น ลิงค์ภายนอก
$item ข้อมูลในแต่ละแถว
คืนค่า $attributes กลับไปสร้างปุ่ม หรือ คืนค่า false ถ้าไม่ต้องการสร้างปุ่ม
แนะนำให้ลอง debug ตัวแปรแต่ละตัวตัวดูว่ามันส่งค่าอะไรมา แล้วเลือกจัดการตามเงื่อนไขที่ต้องการให้ถูก มันจะทำงานได้ตามที่ต้องการเอง
การ debug สำคัญมากในกรณีที่เราไม่มีข้อมูลอะไรเลย เพราะจะทำให้เรารู้ว่า เราได้อะไรมาบ้าง และเมื่อส่งข้อมูลกลับไป เราได้อะไรมา
บนหน้าเว็บ สามารถใช้ dev tools เพื่อดูว่าเราได้ปุ่มอะไรกลับมาได้ด้วย
พอค่าเป็น fault จริงแล้วควรจะไม่แสดงปุ่มอะไร แต่ก็แสดงปุ่ม ดาวน์โหลด มา ต้องแก้ไขตรงไหนครับ ขอบคุณครับ.
ทำความเข้าใจฟังก์ชั่นก่อนครับ จากนั้นเขียน if ให้ถูกเงื่อนไข ซี่งผมไม่ทราบตรงนี้
อันนี้พอแก้ปัญหาไปได้แล้วครับ ขอสอบถามเพิ่มเติม จากตัวอย่างอันนี้ เป็นการเปลี่ยนปุ่มจาก download เป็น ลิงค์ภายนอก แต่ถ้าต้องการให้แสดงทั้งสองปุ่มเมื่อมีข้อมูล หรือ ไม่แสดงปุ่มทั้งสองเมื่อไม่มีข้อมูล ต้องเขียนแบบไหน หรือมีตัวอย่างแนะนำไหมครับ ขอบคุณครับ
มันก็ดูแปลกๆนะ ความจริง แต่ละเอกสารมันน่าจะทำได้อย่างใดอย่างหนึ่งเท่านั้น
วิธีการสร้างปุ่มก็อยู่ในหน้าที่ดูอยู่นั่นแหละ property buttons คือตัวแปรที่เก็บปุ่มที่ต้องการในแต่ละแถว และ onCreateButton จะถูกเรียกเมื่อต้องการสร้าง button แต่ละตัว
สิ่งที่พอช่วยได้คือ แนะนำให้ debug ตัวแปรต่างๆออกมาดู แล้วเขียนเงื่อนไขที่ถูกต้อง (if else ธรรมดานี่แหละ)
ถ้าทำความเข้าใจกับการ debug ได้จะช่วยแก้ปัญหาได้เยอะเลยครับ
public function onCreateButton($btn, $attributes, $item)
{
if ($btn == 'download') {
if ($item['url'] != '') {
$attributes['href'] = $item['url'];
$attributes['class'] = 'button blue icon-world';
$attributes['text'] = '{LNG_URL}';
$attributes['target'] = '_blank';
}
}
return $attributes;
}
}
อันนี้เป็นเงื่อนไขให้แสดงอย่างใดอย่างหนึ่ง คือ แสดงปุ่ม url เมื่อมีข้อมูล (True) ถ้าไม่มีข้อมูล (Fault) ก็ไปแสดงปุ่ม download ใช่ไหมครับ แต่ถ้า download ไม่มีข้อมูลด้วย ก็ไม่ต้องการให้แสดงเหมือนกัน ลองเขียนหลายรูปแบบแล้วจนปัญญาจริงๆครับ ติดจุดนี้อันเดียวจริงๆ ถ้าอันนี้ทำได้ อีกคำถามหนึ่งเรื่อง ckeditor ที่ผมถามไปช่วงเวลาเดียวกัน ก็จะไม่ต้องทำ ซึ่งอันนั้นผมก็ยังหาวิธีแก้ยังไม่ได้เหมือนกัน รบกวนจริงๆครับ ขอบคุณครับ