Top Banner
13

Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

May 18, 2018

Download

Documents

leliem
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน
Page 2: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

Yii 2 Database and Report พฒนา Web Application ดวย Yii 2: ฐานขอมล และรายงาน

โคชเอก

หนงสอเลมน �จาหนายท� http://www.codingthailand.com/yii2ebook

เวอรชน 1 ออกจาหนายวนท� 1 มกราคม 2559

หนงสอเลมน �ผ เขยนต �งใจจดทาข �นเพ�ออยากใหมหนงสอภาษาไทยซกเลมเก�ยวกบ Yii Framework 2 ท�เนนเน �อหาเจาะลกดานฐานขอมล

และการทารายงานในรปแบบตางๆ ซ�งคดวาผอานท�ตองการพฒนา Web Application จาเปนตองมความร ความเขาใจ และสามารถ

นาไปใชกบการทางาน และใชเพ�อพฒนาองคกรของตนเอง หวงวาหนงสอเลมน �จะเปนประโยชน ประหยดเวลาการเรยนร ขอบคณทกคนนะ

ครบ ขอใหมความสข และสนกกบการเรยนรครบ

“ความสาเรจไมมทางลด ตอใหเกงแคไหน แตขาดวนยกบความตอเน�อง

คงยากท�จะผานอปสรรคไปได”

©2015 - 2016 โคชเอก

Page 3: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

สารบญ

บทท� 1: เร�มตน และตดต �ง Yii 2

- ทาไมตองใช PHP Framework

- ทาความรจกกบ Yii Framework

- MVC และ Best Practices

- การตดต �งตองเตรยมอะไรบาง

- Extension ของ PHP ท�ควรเปดไว

- แนะนา Advance Project Template

- แนะนา Advanced Project Template ของ Nenad Zivkovic

- ข �นตอนการตดต �ง Advanced Project Template ผาน Composer

- แนะนาการใชงาน Advanced Project Template เบ �องตน

- โครงสรางของ Advanced Project Template

- สรางโปรเจคใหมดวย Netbeans

- การต �งคา Advanced Project Template ของ Nenad Zivkovic

- การต �งคา Time Zone เพ�อจดรปแบบวนท� และเวลาในประเทศไทย

- การต �งคา และเปล�ยนหนาตาเวบไซต (Theming)

- การตดต �ง Admin Template (AdminLTE)

- การต �งคา AdminLTE

- การสรางโฟลเดอร Theme สาหรบ AdminLTE

- การเพ�มเมนดานซายใหกบ AdminLTE

- เทคนคการใส Box components ของ AdminLTE ใหกบ GridView และ Form

บทท� 2: Yii2 กบการใชงานดานฐานขอมล

- การใชงาน Database Migration

- การสรางตารางใหมโดยใช Database Migration

- การ Reverting หรอ Undo โดยใช Database Migration

- การใชงาน Data Access Object

- Data Access Object: สรางการตดตอกบฐานขอมล

- Data Access Object: การส�งรนคาส�ง SQL

- Data Access Object: เมธอดสาหรบ query ขอมล

Page 4: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

- Data Access Object: ลองเขยน DAO เพ�อเรยกด และแสดงขอมลจากตาราง position

- Data Access Object: ลองเขยน DAO เพ�อลบจากตาราง position

- Data Access Object: DAO สาหรบการเพ�ม และแกไขขอมล

- Data Access Object: การใชเทคนค prepare เพ�อทาใหการเรยกดขอมลไดมประสทธภาพมากข �น

- Data Access Object: การปองกนไมใหช�อคอลมนในตาราง และช�อตารางซ �ากบคาสงวนของฐานขอมล

- ทาความรจกกบ Query Builder

- ข �นตอนการใช Query Builder

- ฝกเขยน Query Builder และ ดรายละเอยด Method สาหรบการควร�ขอมล

- การใชงาน Active Record

- การสราง Models ดวย Gii เพ�อใชงานกบ Active Record

- ข �นตอนการควร�ขอมลดวย Active Record

- การควร�ขอมลดวย Active Record แบบวธลด (shortcut methods)

- การเขาถง Attributes ขอมล เม�อใช Active Record

- การสราง Attributes ใหม อาจใชคานวณ หรอจดรปแบบขอมล เม�อใช Active Record

- เทคนคการใช asArray() กบ Active Record

- การเพ�ม หรอแกไขขอมลดวย Active Record

- การเพ�มหรอลดคาของคอลมน (Updating Counters)

- การลบขอมล โดยใช Active Record

- การใช Transactions

- การ Join ตาราง โดยใช Active Record

- การใช Data Providers สาหรบแบงหนา และจดเรยงขอมล

- การใช SqlDataProvider สาหรบแบงหนา และจดเรยงขอมล

- การใชงาน GridView

- การกรองขอมลใน GridView (filters)

- Workshop: การจดการขอมลบคลากร (Person)

บทท� 3: การสรางรายงานดวย Yii 2

- สรางรายงานในรปแบบ PDF และรองรบฟอนตภาษาไทย ดวย mPDF

- ข �นตอนการตดต �ง yii2-mpdf

- การสงอออกและนาเขาไฟล Excel

- สรางรายงานในรปแบบ Chart ดวย HighCharts

Page 5: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

บทท� 4: โบนสพเศษ

- การต �งคาและทางานกบอเมล ดวย SMTP

- ทดลองสงเมล ดวย SMTP

- การสราง email layout และ view สาหรบสงเมล

- แนะนาการอพโหลด Yii2 เพ�อใชงานจรง

Page 6: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

บทท� 1: เร�มตน และตดต �ง Yii 2

ทาไมตองใช PHP Framework

มการเขยนโคดท�เปนมาตรฐาน ชวยลดและกาจดโคดท�ไมจาเปน

ชวยลดระยะเวลาในการทางาน เชน เร�องความปลอดภย การสรางฟอรม เปนตน

ชวยทาใหการทางานเปนทมงายข �น เพราะตองเขยนโคดเปนมาตรฐานเดยวกน

ชวยในการบารงรกษาโคดไดงายข �น

ม community ท�เขมแขง เราสามารถถาม และคอยขอคาแนะนาได

ทาความรจกกบ Yii Framework

Yii (อานออกเสยงวา ย) เปน PHP Framework ท�มประสทธภาพการทางานสง มคณลกษณะเดนหลายดานท�ชวยใหเราเขยนโปรแกรมได

งายข �น ไมวาจะเปน MVC, DAO, Form input และการตรวจสอบความถกตองของขอมล (validation), AJAX, Security เปนตน นอกจากน �

Yii ยงสามารถสราง Web Application ไดทกขนาด ไมวาจะเปนระบบ CMS, e-commerce, Restful Web service และยงใหนกพฒนาตอ

ยอดเขยน extensions เสรมไดอกดวย

MVC และ Best Practices

Yii มรปแบบการเขยนแบบ MVC (Model, View, Controller) ซ�งการจะเขยนใหดน �น ตองศกษาแนวทางกนกอน สรปใหดงน �

สรปการเขยน Model ท�ด

ประกอบดวย โคดในสวน business data

ประกอบดวย โคดในการสวนของการตรวจสอบความถกตองของขอมล

ประกอบ ดวย method การทางานในสวนของ business logic

อยาเขยนโคดเก�ยวกบการ request, session หรอโคดเก�ยวกบสภาพแวดลอมของระบบ

ระวงหรอหลกเล�ยงเขยนโคดเก�ยวกบ HTML ในสวนของการแสดงผลใน Model ใหไปเขยนท� view แทน

สรปการเขยน View ท�ด

View จะตองมโคดเฉพาะ HTML และ PHP ท�เก�ยวของกบการแสดงผล จดรปแบบขอมลตางๆเทาน �น

จะตองไมโคดเก�ยวกบการ query ฐานขอมลตางๆ

หลกเล�ยงการรบคา $_GET, $_POST เพราะเปนหนาท�ของ Controller

ถาเรารบคามาจาก model จะตองไมไปแกไขคาท�รบมา

Page 7: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

ใชคลาสในกลม Helper เพ�อชวยในการจดรปแบบขอมล

สรปการเขยน Controller ท�ด

มไวเขยนเก�ยวกบ request ขอมล เชน get, post, put เปนตน

มไวเรยกเมธอดเก�ยวกบ Models และ เรยก component ตางๆ

มไวสงขอมลตางๆ ไปให views เพ�อนาไปแสดงผล

ไมควรมโคดการประมวลผลของ Models ถามใหไปเขยนท� Models ดกวา

หลกเล�ยงการเขยน HTML และโคดท�เก�ยวของกบการแสดงผลขอมล ใหไปเขยนท� view ดกวา

การตดต �งตองเตรยมอะไรบาง

เน�องจากหนงสอเลมน �ไมใชหนงสอพ �นฐาน การเตรยมตวอยางแรกในการอานหนงสอเลมน �คอ เราจะตองมพ �นฐานภาษา PHP และ ม

ความรเก�ยวกบการเขยนโปรแกรมในรปแบบของ Object Oriented Programming หรอ OOP มากอน เพ�อใหเกดประโยชนสงสดในการ

เรยนร สาหรบคนท�ยงไมมพ �นฐานความรดงท�กลาวมา ผมวาแนะนาควรใหศกษากอนดกวาครบ

ในการตดต �ง Yii 2 ส�งท�เราตองเตรยม ประกอบดวย

1. XAMPP สาหรบจาลองเคร�องเราใหเปน Web Server ประกอบดวย Apache, PHP, MySQL/MariaDB และ phpMyAdmin

2. Netbeans สาหรบใชเขยนโคด หรอจะใช IDE ท�ถนดกได

3. Composer สาหรบการจดการกบ PHP Packages หรอ Library ตางๆ

ข �นตอนการตดต �งท �งหมด สามารถเปดดวดโอไดท� https://www.youtube.com/watch?v=6DH_aEaJ3X4

Extension ของ PHP ท�ควรเปดไว

บางคร �งระหวางตดต �ง Composer หรอ พฒนา Web Application อาจม errors สาหรบบางคาส�ง กอนตดต �ง Yii2 ควรไปตรวจสอบ หรอ

เปด extension ในไฟล php.ini ใหเรยบรอย คอ ใหเปดไฟล php.ini (C:\xampp\php\php.ini) คนหา extension แลวเอาเคร�อง; ออก

ขางหนา เสรจแลวบนทกไฟลแลว restart Apache สวนรายการ extension ท�ควรเปดมดงตอไปน �

extension=php_bz2.dll extension=php_curl.dll extension=php_mbstring.dll extension=php_fileinfo.dll

extension=php_gd2.dll extension=php_openssl.dll extension=php_intl.dll

Page 8: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

แนะนา Advance Project Template

หลงจากตดต �งเคร�องมอตางๆ เรยบรอยแลว เราจะมาตดต �ง Yii 2 กน ซ�งโดยปกตรปแบบของโปรเจคของ Yii 2 จะมอย 2 รปแบบดวยกน

ไดแก Basic Project Template และ Advanced Project Template ในหนงสอเลมน �ผมจะเลอกใชรปแบบ Advanced Project Template

เพราะมการแยกสวน Front-end และ Back-end กนอยางชดเจน และมตวชวยอ�นๆเชน มหนาเวบลงทะเบยนผใช มหนาและฟงกชนการก

คนรหสผานผใช โดยท�เราไมตองออกแรงเพ�ม แต!! ยงมดกวาน �นคอ ในหนงสอเลมน �เราจะใช Advanced Template ท�จะชวยทนแรงเรา

ข �นไปอก โดยมคนท�ทา Advanced Project Template สาเรจรปท�มหลากหลายฟงกชน และเราสามารถตดต �งมาใชไดเลย

แนะนา Advanced Project Template ของ Nenad Zivkovic

เพ�อความรวดเรว และประหยดเวลาในการพฒนา Web Application หนงสอเลมน �จะใช Advanced Project Template ของ Nenad

Zivkovic ใหเราเขาไปดรายละเอยดตางๆไดท� https://github.com/nenad-zivkovic/yii2-advanced-template หรอใครจะใช Advance

Project Template แบบมาตรฐานท�มากบ Yii กไดเชนเดยวกน

สาหรบ Advanced Project Template ของ Nenad Zivkovic น �นเคาไดเขยนเพ�มฟงกชนตางๆจาก Advanced Project Template แบบ

มาตรฐานของ Yii หลายสวนดวยกน ไดแก

มระบบลงทะเบยนผใช (User) ให พรอมกาหนด account activation ไดดวย (กาหนดไดวาผใชตองยนยนตวตนผานอเมลหลง

ลงทะเบยนหรอไม) โดยกาหนดไดท� common/config/params.php

สามารถลอกอนไดท �งใชแบบ username/password แบบปกต และยงลอกอนไดแบบ email/password ไดดวย แนนอนเรา

สามารถต �งคาระบบไดท� โดยกาหนดไดท� common/config/params.php เชนเดยวกน

มระบบการจดการผใช หรอ RBAC มาใหเรยบรอย ทาใหเราสามารถจดการในสวนของผใชไดเลย และสามารถกาหนดบทบาท

หรอสทธ�ในการเขาถงหนาเวบไดงายข �น

มการเกบ Session ลงในฐานขอมล

มระบบธม (Theming) สาหรบเปล�ยนหนาเวบไซตไดหลากหลายรปแบบ และยงสามารถเพ�มธมไดงาย

มระบบเวบไซตแบบหลายภาษา (Translation) ทาใหเราสามารถกาหนดใหเวบไซตมการแสดงผลแบบหลายภาษาได

มระบบ และหนาเวบให admin หรอ The Creator (ตวเรา) จดการกบผใชไดเลย

มระบบตรวจสอบรหสผานสาหรบแนะนาผใชวากรอกยาก-งายเกนไปหรอไม

และแนนอนเรายงใชความสามารถของ Advanced Project Template แบบมาตรฐานของ Yii ไดครบถวน เตรยมอนเตอรเนตให

พรอม แลวมาตดต �งกนเลยครบ!

Page 9: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

ข �นตอนการตดต �ง Advanced Project Template ผาน Composer

1. เขาไปท�โฟลเดอร htdocs ของ XAMPP (ปกตจะอยท� C:\xampp\htdocs) แลวคลกขวา เลอก Use Composer here เราจะไดหนาตาง

command line ข �นมาเพ�อพรอมพมพคาส�งสาหรบตดต �ง หรอถาไมคลกขวากสามารถใชคาส�ง command line ไดโดย cd เขาไปยง

โฟลเดอร htdocs กไดเหมอนกน เชน cd c:\xampp\htdocs

Note: สาหรบคนท�ใช Linux หรอ Mac OS X ใหตดต �ง Composer โดยพมพคาส�ง:

curl -sS https://getcomposer.org/installer | php

mv composer.phar /usr/local/bin/composer

2.พมพคาส�ง composer self-update เพ�อ update เวอรชนของ Composer ใหลาสด แลวกดป ม Enter รอสกครจะข �นคาวา Updating to

version… กเปนอนเสรจเรยบรอย

Page 10: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

3. ตดต �ง composer asset plugin พมพคาส�ง composer global require "fxp/composer-asset-plugin:~1.1.1" แลวกดป ม Enter รอ

จนกวาจะเรยบรอยเหมอนเดม

Note: ระหวางข �นตอนท� 3 สาหรบคนท�เพ�งเคยตดต �งคร �งแรก จะมการถามหา token ของ GitHub ดงน �น ใหไปสราง token กอน

โดยไปสมครสมาชกไดท�เวบ github.com จากน �นลอกอนแลวเขาไปท� https://github.com/settings/tokens คลกป ม Generate

new token กรอก Token description คลกป ม Generate token แลวใชเมาสลากคลม token เพ�อคดลอก (Copy) แลวนาไปวาง

(Paste) ท�หนาจอ command line ไดเลย

4. สรางโปรเจคใหมโดยเราจะใช Advanced Project Template ของ Nenad Zivkovic

พมพคาส�ง composer create-project nenad/yii2-advanced-template yii2system แลวกดป ม Enter รอจนเสรจเรยบรอย แลวใหลอง

ตรวจสอบดวามโฟลเดอร yii2system ถกสรางข �นในโฟลเดอร htdocs หรอไม ถาม แสดงวาตดต �งเรยบรอยแลว

Note: ตรงคาส�ง yii2system คอ ช�อโฟลเดอรท�จะถกสรางท� C:\xampp\htdocs สาหรบเกบไฟลโปรเจคของเราน�นเอง

5. พมพคาส�งเพ�อเขาไปในโฟลเดอร _protected ดงน � cd yii2system/_protected/ แลวกดป ม Enter (อยาลมวา yii2system คอช�อโปรเจค

ของเรา ถาเปล�ยนช�อเปนอยางอ�นกอยาลมเปล�ยนตรงน �ดวย) ตอดวยพมพคาส�ง php init กด Enter พมพ 0 แลว Enter อกคร �งเพ�อเลอก

สภาพแวดลอมการพฒนาโปรแกรม (Development) พมพ yes แลวกด Enter

Page 11: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

6. สรางฐานขอมล (database) โดยใช phpMyAdmin เปด Browser แลวพมพ http://localhost/phpmyadmin คลกท� ลงก New เพ�อสราง

ฐานขอมลใหม จากน �นกรอกช�อฐานขอมล รวมท �ง Collation เสรจแลวคลกป ม Create

7. เปดไฟล main-local.php เพ�อต �งคาฐานขอมลใหถกตอง yii2system /_protected/common/config/main-local.php แลวแกไขไฟลให

ตรงกบฐานขอมลท�ไดสรางไว ไดแก dbname, username, password

Page 12: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

8. กลบมาท�หนาตาง command line (สงเกตวาเรายงอยในโฟลเดอร _protected อย) พมพ yii migrate แลวกด Enter จากน �นจะมรายการ

ตารางของฐานขอมลแสดงข �นมา พมพ yes เพ�อสรางตารางทกตาราง โดยตารางตางๆน �น ประกอบดวยตารางผใช ตารางสาหรบ rbac

ตารางสาหรบเกบ session และ ตารางตวอยางสาหรบเกบบทความ (article)

Note: ถาใช Linux หรอ Mac OS ใหใชคาส�ง . /yii migrate

Page 13: Yii 2 Database and Report - Coding Mentor by โค้ชเอก ... 2 Database and Report พ ฒนา Web Application ด วย Yii 2: ฐานข อม ล และรายงาน

9. พมพคาส�ง yii rbac/init แลวกด Enter เพ�อสรางระบบจดการผใชแบบ rbac สรางตารางบทบาท และสทธ�การเขาใชงานตางๆ

Note: ถาใช Linux หรอ Mac OS ใหใชคาส�ง . /yii migrate/init

10. เสรจเรยบรอย! เปด Web browser แลวลองพมพ http://localhost/yii2system เพ�อเขาในสวนของ front-end และลองพมพ

http://localhost/yii2system/backend เพ�อเขาสวนของ back-end

แนะนาการใชงาน Advanced Project Template เบ �องตน

หลงจากตดต �ง Advanced Project Template เรยบรอยแลว ส�งท�ตองทาตอไป คอ แนะนาใหลงทะเบยน (เมน Signup) เพ�อสรางผใช

ใหม สาหรบผใชคนแรกท�ลงทะเบยนจะไดเปน ผดแลระบบสงสด หรอเรยกบทบาทวา The Creator สามารถทาอะไรกไดใน Web

Application ของเรา สวนการลงทะเบยนคร �งตอๆมาจะไดบทบาทหรอสทธ�เปนสมาชกหรอ member น�นเอง