สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
01-406-093-203
การพัฒนาเว็บแอปพลิเคชันด้วยเฟรมเวิร์ค
โดย นายศุภมิตร จันทร์โทวงศ์
- สาขาวิชาระบบสารสนเทศ คณะบริหารธุรกิจ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 1 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เช็คชื่อเข้าชั้นเรียน
- ให้นักศึกษาสแกน QR Code นี้เพื่อเข้าสู่ระบบเช็คชื่อเข้าเรียน
- ระบบจะทำการบันทึกประวัติการเข้าเรียนในวิชานี้อัตโนมัติ
ผู้สอนยังไม่ได้เปิดระบบเช็คชื่อสำหรับบทเรียนสัปดาห์นี้ หรือหมดเวลากรอกข้อมูลแล้ว
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 2 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
แสดงข้อมูลในหน้าแรก (Home Page Display)
- การนำข้อมูลสำคัญที่ดึงมาจากฐานข้อมูล (เช่น สินค้าแนะนำ หรือบล็อกล่าสุด) ไปจัดแสดงในส่วนของหน้าจอหลักของเว็บไซต์
- ใช้ตรรกะสั่งจัดเรียงข้อมูลตามเวลาล่าสุด (
latest()) หรือดึงข้อมูลแบบสุ่มเพื่อนำเสนอผู้เยี่ยมชมหน้าแรก - จัดวางรูปแบบโดยใช้การ์ดข้อมูลแบบตารางหรือกริด (Grid System) ในการแสดงหัวข้อข่าวแบบย่อ
- ตัวอย่างการเขียนสืบค้นข้อมูลบล็อกและพ่วงเปลี่ยนหน้าจอการนำส่ง
code-example.php
// ดึงบล็อกล่าสุด 6 รายการไปจัดเรนเดอร์ในหน้าแรก
public function home()
{
$posts = DB::table('posts')->latest()->limit(6)->get();
return view('home', compact('posts'));
}
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 3 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
แสดงเนื้อหาในหน้าเว็บ (Detail Page)
- หน้าต่างรับข้อมูลสำหรับเปิดดูบล็อก ข้อมูลสินค้า หรือหัวข้อข่าวสารแบบตัวเต็ม
- กำหนด Route แบบ Dynamic Parameter เพื่อใช้รองรับ ID หรือ Slug ของหัวข้อบล็อกนั้นๆ
- คำเตือน: หากข้อมูลจาก CKEditor มีแท็ก HTML ปนอยู่ ต้องแสดงผลใน Blade ด้วยรูปแบบปีกกา
{!! $value !!} แทนการใช้ {{ $value }} (เนื่องจากระบบปกติจะกรองและแปลงเป็น Text) - การดึงข้อมูลและนำบทความเดี่ยวรันแสดงผล
code-example.php
// การเรนเดอร์เนื้อหาบล็อกใน Blade โดยคงแท็ก HTML ไว้
<div class="post-content">
{!! $post->content !!}
<!-- ข้อความจะแสดงตัวหนา ตัวเอียง หรือลิงก์ตามผู้บันทึกจัดสไตล์ไว้ -->
</div>
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 4 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
กำหนดเนื้อหาด้วย CKEditor
- CKEditor คือไลบรารีประเภท Rich Text Editor ที่เปลี่ยนกล่องพิมพ์ข้อความแบนราบ (textarea) ให้เป็นหน้าต่างแต่งบทความระดับมืออาชีพ
- ช่วยให้ผู้บันทึกเนื้อหาสามารถทำตัวหนา, ขีดเส้นใต้, จัดย่อหน้า หรือใส่หัวข้อได้เสมือนการทำงานใน Word
- วิธีใช้อย่างง่ายคือการโหลดไฟล์สคริปต์ของ CKEditor ผ่านทาง CDN
- เขียนคำสั่ง JavaScript เพื่อผูกความสัมพันธ์เข้ากับ ID หรือแอตทริบิวต์ของกล่องรับข้อความ
code-example.html
<!-- 1. แปะสคริปต์ CDN ที่ส่วนท้ายของหน้าฟอร์ม -->
<script src="https://cdn.ckeditor.com/ckeditor5/36.0.1/classic/ckeditor.js"></script>
<!-- 2. เขียนสคริปต์เพื่อเปลี่ยน textarea ให้กลายเป็น Rich Editor -->
<script>
ClassicEditor
.create(document.querySelector('#editor'))
.catch(error => {
console.error(error);
});
</script>
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 5 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 1)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 6 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 2)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 7 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 3)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 8 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 4)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 9 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 5)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 10 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 6)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 11 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 7)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 12 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 8)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 13 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
แบบทดสอบก่อนเรียน (Pre-test)
1. คิวงาน (Queues) ใน Laravel ช่วยยกระดับประสิทธิภาพความเร็วในการโหลดหน้าเว็บอย่างไร?
A. ช่วยทำความสะอาดโค้ดสคริปต์หน้าเว็บ
B. ช่วยแยกงานขนาดใหญ่ที่รันช้า (เช่น ส่งอีเมลหาลูกค้าหมื่นคน) ไปประมวลผลเป็นงานเบื้องหลัง (Background Job) แทนการรันพร้อมการโหลดหน้าจอ
C. เพิ่มการจัดอันดับ SEO ความเร็วสูง
D. ช่วยคอมไพล์ข้อมูล Blade ล่วงหน้า
2. คำสั่งใดใช้ในการรันกระบวนการ Worker ประมวลผลคิวงานหลังบ้านคอยกวาดล้างกิจกรรมที่ค้างคิวในระบบมาดำเนินการ?
A. php artisan queue:work
B. php artisan queue:listen
C. php artisan queue:run
D. laravel start:worker
3. ไดรเวอร์สำหรับการตั้งค่าดิสก์จัดเก็บบันทึกคิวงานเริ่มต้น (Queue Driver) สำหรับนักเริ่มต้นพัฒนาคือตัวใด?
A. sync (ประมวลผลพร้อมกัน)
B. database (เก็บบันทึกลงตารางดาต้าเบส)
C. redis (แคชความเร็วสูง)
D. sqs
4. คำสั่งสร้างคลาส Job ชิ้นใหม่สำหรับระบบคิวงานคือข้อใด?
A. php artisan make:job SendWelcomeEmail
B. php artisan new:job SendWelcomeEmail
C. laravel make:job SendWelcomeEmail
D. composer create-job SendWelcomeEmail
5. ระบบแจ้งเตือน (Notifications) ใน Laravel สามารถส่งข้อความผ่านทางช่องทาง (Channels) ใดได้บ้าง?
A. Email และ SMS
B. Database (เก็บบันทึกดูในหน้าเว็บ)
C. Slack และบริการภายนอกอื่น ๆ
D. ถูกทุกข้อ
6. คำสั่งส่ง Job ชิ้นหนึ่งเข้าทำงานในคิวคือข้อใด?
A. JobName::dispatch()
B. JobName::run()
C. dispatch_now(new JobName)
D. JobName::send()
7. คำสั่งสร้างตารางที่จำเป็นสำหรับไดรเวอร์คิวงานฐานข้อมูลคือข้อใด?
A. php artisan queue:table
B. php artisan make:queue-table
C. php artisan migrate:queue
D. laravel database:queue
8. คิวงานที่เกิดข้อผิดพลาดรันล้มเหลวสะสมในระบบ จะถูกโยกย้ายไปจัดเก็บไว้ในตารางใด?
A. failed_jobs
B. error_jobs
C. jobs_failed
D. trash_jobs
9. คำสั่งดึงข้อมูลงานที่ล้มเหลวมารันซ่อมแซมใหม่อีกครั้งคือข้อใด?
A. php artisan queue:retry all
B. php artisan queue:run failed
C. php artisan queue:recover
D. laravel queue:retry-failed
10. เมธอดใดในคลาส Notification ที่ใช้ระบุรายการช่องทางการรับส่งข้อมูลแจ้งเตือนขารับ?
A. via($notifiable)
B. toMail($notifiable)
C. toDatabase($notifiable)
D. channels()
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 14 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 10)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 15 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 11)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 16 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
เนื้อหาเสริมการเรียนรู้บทเรียนที่ 14 (ตอนที่ 12)
- ศึกษาเพิ่มเติมจากเอกสารประกอบการสอนหลักและคู่มือฝึกปฏิบัติ
- ทบทวนหัวข้อสำคัญของบทเรียน โครงสร้างโค้ด และสถาปัตยกรรมระบบ
- ฝึกฝนทักษะการเขียนโปรแกรมผ่านเวิร์กชอปท้ายบทเพื่อเพิ่มความชำนาญ
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 17 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
แบบทดสอบหลังเรียน (Post-test)
1. คิวงาน (Queues) ใน Laravel ช่วยยกระดับประสิทธิภาพความเร็วในการโหลดหน้าเว็บอย่างไร?
A. ช่วยทำความสะอาดโค้ดสคริปต์หน้าเว็บ
B. ช่วยแยกงานขนาดใหญ่ที่รันช้า (เช่น ส่งอีเมลหาลูกค้าหมื่นคน) ไปประมวลผลเป็นงานเบื้องหลัง (Background Job) แทนการรันพร้อมการโหลดหน้าจอ
C. เพิ่มการจัดอันดับ SEO ความเร็วสูง
D. ช่วยคอมไพล์ข้อมูล Blade ล่วงหน้า
2. คำสั่งใดใช้ในการรันกระบวนการ Worker ประมวลผลคิวงานหลังบ้านคอยกวาดล้างกิจกรรมที่ค้างคิวในระบบมาดำเนินการ?
A. php artisan queue:work
B. php artisan queue:listen
C. php artisan queue:run
D. laravel start:worker
3. ไดรเวอร์สำหรับการตั้งค่าดิสก์จัดเก็บบันทึกคิวงานเริ่มต้น (Queue Driver) สำหรับนักเริ่มต้นพัฒนาคือตัวใด?
A. sync (ประมวลผลพร้อมกัน)
B. database (เก็บบันทึกลงตารางดาต้าเบส)
C. redis (แคชความเร็วสูง)
D. sqs
4. คำสั่งสร้างคลาส Job ชิ้นใหม่สำหรับระบบคิวงานคือข้อใด?
A. php artisan make:job SendWelcomeEmail
B. php artisan new:job SendWelcomeEmail
C. laravel make:job SendWelcomeEmail
D. composer create-job SendWelcomeEmail
5. ระบบแจ้งเตือน (Notifications) ใน Laravel สามารถส่งข้อความผ่านทางช่องทาง (Channels) ใดได้บ้าง?
A. Email และ SMS
B. Database (เก็บบันทึกดูในหน้าเว็บ)
C. Slack และบริการภายนอกอื่น ๆ
D. ถูกทุกข้อ
6. คำสั่งส่ง Job ชิ้นหนึ่งเข้าทำงานในคิวคือข้อใด?
A. JobName::dispatch()
B. JobName::run()
C. dispatch_now(new JobName)
D. JobName::send()
7. คำสั่งสร้างตารางที่จำเป็นสำหรับไดรเวอร์คิวงานฐานข้อมูลคือข้อใด?
A. php artisan queue:table
B. php artisan make:queue-table
C. php artisan migrate:queue
D. laravel database:queue
8. คิวงานที่เกิดข้อผิดพลาดรันล้มเหลวสะสมในระบบ จะถูกโยกย้ายไปจัดเก็บไว้ในตารางใด?
A. failed_jobs
B. error_jobs
C. jobs_failed
D. trash_jobs
9. คำสั่งดึงข้อมูลงานที่ล้มเหลวมารันซ่อมแซมใหม่อีกครั้งคือข้อใด?
A. php artisan queue:retry all
B. php artisan queue:run failed
C. php artisan queue:recover
D. laravel queue:retry-failed
10. เมธอดใดในคลาส Notification ที่ใช้ระบุรายการช่องทางการรับส่งข้อมูลแจ้งเตือนขารับ?
A. via($notifiable)
B. toMail($notifiable)
C. toDatabase($notifiable)
D. channels()
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 18 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
คำถามท้ายบทเรียน
ไวยากรณ์ปีกกาของ Blade แบบใดที่ใช้สำหรับการแสดงข้อความดิบที่มีแท็ก HTML ปนอยู่ โดยไม่อ่านแปลงคำอักษร (Unescaped)?
A. {{ $content }}
B. {!! $content !!}
C. <% $content %>
D. {{{ $content }}}
คำอธิบาย: ไวยากรณ์ {!! $content !!} ใช้เพื่อเรนเดอร์ข้อมูลดิบที่มีรหัสรูปแบบ HTML ปนอยู่ให้เป็นภาพผลลัพธ์จริงบนหน้าจอเบราว์เซอร์
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 19 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
Workshop 14: ทำหน้าข่าวสาร และติดตั้งตัวตกแต่งเนื้อหาด้วย CKEditor
- 1ดึงข้อมูลจากตารางข่าวสารออกมาเรียงลำดับแสดงที่หน้าแรก (Home Page)
- 2ทำหน้าต่างบทความเดี่ยว แสดงข้อมูลแบบไม่กรองป้ายแท็กความสวยงาม {!! $post->content !!}
- 3เพิ่มสคริปต์เรียกใช้งาน CKEditor 5 ผ่านระบบ CDN ในหน้าฟอร์มเพิ่มข่าวสาร
- 4ตั้งค่ากล่องรับเนื้อหาแบบ textarea ให้กลายเป็น Rich Text Editor เพื่อจัดการฟอร์แมตข้อมูล
command_prompt.sh
<!-- เปิดใช้การแสดงผลแบบ HTML แท้ใน Blade -->
<div>{!! $post->content !!}</div>
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 20 / 21
สัปดาห์ที่ 14 • การแสดงผลเนื้อหาบนหน้าเว็บและการใช้ CKEditor01-406-093-203 Laravel Course
ใบงานที่ 14: ระบบเขียนบล็อกและแสดงเนื้อหาเต็มรูปแบบพร้อมตัวตกแต่ง CKEditor
ทำแผงบันทึกบทความที่ผู้เขียนสามารถใช้ CKEditor จัดหัวข้อ ทำตัวหนา หรือขีดเส้นใต้ได้ และสามารถนำบทความนั้นไปแสดงผลที่หน้าแรกได้อย่างสมบูรณ์
เกณฑ์การตรวจประเมินผล:
- การเชื่อมต่อและแสดงบทความบทความในหน้าหลักได้อย่างถูกต้อง40%
- การติดตั้งและเรียกใช้งานหน้าต่าง CKEditor ลงในระบบได้สมบูรณ์40%
- การแสดงผลในหน้าวิวเต็มรูปแบบอย่างถูกต้องปลอดภัย20%
อาจารย์ผู้บรรยาย: ศุภมิตร จันทร์โทวงศ์สไลด์ที่ 21 / 21