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