หนังสือ yii framework tip 50 เทคนิค yii framework

31
Programmer Thailand 50 Yii Framework Tip 50 เทคนิคพิเศษสําหรับ Yii Framewok ที ่คุณอาจไมเคยเห็นมาก่อนที ่จะช ่วยให้พัฒนา Application อย่าง มืออาชีพมากยิ งขึ้น มานพ กองอุ่น WWW.PROGRAMMERTHAILAND.COM

Upload: manop-kongoon

Post on 07-Aug-2015

414 views

Category:

Technology


10 download

TRANSCRIPT

Page 1: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

Programmer Thailand

50 Yii Framework Tip 50 เทคนคพเศษสาหรบ Yii Framewok ทคณอาจไม

เคยเหนมากอนทจะชวยใหพฒนา Application อยาง

มออาชพมากยงขน

มานพ กองอนWWW.PROGRAMMERTHAILAND.COM

Page 2: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 1 ~

www.programmerthailand.com

คานา หนงสอเลมนเปนหนงสออกเลมของ Yii Framework โดยเปนหนงสอทรวบรวมเอาเทคนค

ตางๆ เพอใชในการสราง Application ใหมความรวดเรวและสมบรณแบบมากยงขน โดยกาหนด

ตงแตพนฐานไปจนถงระดบสง โดยแบงการนาเสนอออกเปนบท ซงในแตละบทกจะมเทคนคตางๆ กน

ไป

หนงสอเลมนเปนหนงสอทผมและทมงานตงใจเขยนและถายทอดเปนอยางมาก โดยเราทางาน

อยางหนกหลายเดอนเพอใหหนงสอเลมนมความครบถวนสมบรณมากทสด ซงกหวงเปนอยางยงวา

จะเปนหนงสอใกลมอเพอตอเตม Application ของทานใหมความสมบรณแบบมากยงขน

ทายทสดตองขอขอบคณทกทานททาใหหนงสอเลมนเกดขน ขอบคณนองวระยทธ บญออน

ทชวยเรอง Code Action Proof ขอบคณนองณฐวฒ เกษศรรตน ทชวยในเรอง Graphic และท

สาคญตองขอขอบคณเพอนๆ ชาว Programmer Thailand ทกๆ ทานทชวยสนบสนนพวกเรา

ดวยดเสมอมา ขอบคณมากๆ ครบ

มานพ กองอน

และทมงาน Programmer Thailand

Page 3: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 2 ~

www.programmerthailand.com

สารบญ

คานา ........................................................................................................................................................ 1

สารบญ ................................................................................................................................................... 2

บทท 1 ขนพนฐาน .................................................................................................................................. 6

การตดตง Yii Framework .................................................................................................................. 6

การดาวโหลด .................................................................................................................................... 6

การตดตง .......................................................................................................................................... 6

การสราง Project Skeleton ...............................................................................................................10

การสราง Project ใน Netbeans IDE ................................................................................................. 11

การตดตง Yii Snippets ใน Sublime Text 3 ................................................................................. 13

การตดตง Yii Eclipse PlugIn ............................................................................................................ 15

การออกแบบ ER Diagram และการ Forward Engineering ....................................................... 20

การออกแบบ ER Diagram .......................................................................................................... 20

การสรางฐานขอมล ....................................................................................................................... 23

การ Forward Engineering ......................................................................................................... 24

พจนานกรมขอมล (Data Dictionary) ....................................................................................... 28

การสราง Attribute Label ใหเปนภาษาไทยโดยอตโนมต ................................................................ 30

การกาหนด Yii Message ใหเปนภาษาไทย ...................................................................................... 33

การใชงานรปภาพ ................................................................................................................................ 34

ตวอยางการใชงาน ........................................................................................................................ 34

การใชงาน Link .................................................................................................................................... 36

Page 4: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 3 ~

www.programmerthailand.com

ตวอยางการใชงาน ........................................................................................................................ 36

บทท 2 วาดวยเรอง Extension ......................................................................................................... 38

การตดคาดวย XReadmore ............................................................................................................. 38

การตดตง Yii Booster Extension ................................................................................................... 40

การตดตง User Extension และ Rights Extension ..................................................................... 44

การตดตง User Extension ......................................................................................................... 44

การตดตง Rights Extension ...................................................................................................... 47

การใชงาน User และ Rights Extension เบองตน .................................................................... 51

การสง Email ดวย SMTP Extension ............................................................................................. 55

การตดตง ........................................................................................................................................ 55

การใชงาน........................................................................................................................................ 56

บทท 3 วาดวยเรองของ Model......................................................................................................... 57

Database Active Record ................................................................................................................. 57

Create ............................................................................................................................................. 57

Read ................................................................................................................................................ 57

SLUG ..................................................................................................................................................... 59

TAGABLE ................................................................................................................................................ 61

บทท 4 วาดวยเรองของ Controller ................................................................................................. 70

การสราง Criteria ในการ Select ขอมล ......................................................................................... 70

การสรางระบบ User Login จากฐานขอมล .................................................................................... 72

บทท 5 วาดวยเรองของ View ........................................................................................................... 73

การ Register ไฟล JavaScript และ CSS ....................................................................................... 73

การ Register Core Script ......................................................................................................... 73

การ Register JavaScript ไฟล ................................................................................................... 73

Page 5: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 4 ~

www.programmerthailand.com

การ Register ไฟล CSS .............................................................................................................. 74

การ Register Script ทเปน JavaScript แบบ Inline ............................................................... 75

การเปลยนขอความ “Home” ใน Breadcumb เปน “หนาหลก” .................................................. 76

การปรบ Breadcumb ใหอยในรปแบบของ Tag ul และ li ............................................................. 77

การสราง Drop Down List สาหรบการเกบขอมลแบบ ENUM .................................................... 78

การสรางมาหมน (Carousel) ใน Yii Booster Extension............................................................. 79

การสราง CKEditor สาหรบ TextArea ............................................................................................80

การดงขอมลจากตารางอนมาแสดงเปน Drop Down List ........................................................... 82

การเปลยน site/index เปน home ใน URL .................................................................................... 83

การซอนไฟล index.php เมอเรยก URL ........................................................................................... 84

การสราง Captcha ใหกบฟอรมดวย CCaptcha ........................................................................... 86

การสรางฟอรมแบบ Horizontal สาหรบ Yii Booster Extension .............................................. 88

การแสดงขอมลจากตารางอนในความสมพนธแบบ BelongsTo .................................................. 89

การสราง Date Picker สาหรบเกบลง Field DATE ใน MySQL ................................................... 92

การแสดงผลวนเวลาภาษาไทยจากฐานขอมล ................................................................................. 93

การแกไขหนา Error สาหรบ Yi Framework ................................................................................... 94

การสรางและแสดง Flash Message สาหรบ Yii Booster Extension ........................................ 95

การสราง AJAX Button ..................................................................................................................... 97

การสราง AJAX Link .......................................................................................................................... 99

การสราง Facebook Like Button .................................................................................................. 101

สราง Application ใน Facebook .............................................................................................. 101

สราง Facebook Like Button .................................................................................................. 102

บทท 6 วาดวยเรองของรายงาน ...................................................................................................... 105

การแสดงผลขอมลแบบ JSON ......................................................................................................... 105

Page 6: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 5 ~

www.programmerthailand.com

การสรางกราฟดวย jQWidgets ..................................................................................................... 106

การแสดงกราฟดวย Highcharts JS .............................................................................................. 109

การ Export ขอมลแบบ CSV ............................................................................................................. 112

การสรางกราฟดวย RGraph Extension ........................................................................................ 114

การสรางกราฟดวย Google Chart Extension ............................................................................116

Pie Chart........................................................................................................................................116

Gauge ............................................................................................................................................. 117

Line Chart ..................................................................................................................................... 117

บทท 7 กรณตวอยาง......................................................................................................................... 119

การสราง Drop Down List เลอกจงหวดโชวอาเภอ เลอกอาเภอโชวตาบล แบบ Dependence

(AJAX) ................................................................................................................................................... 119

provinces ....................................................................................................................................... 119

districts ........................................................................................................................................... 119

tambons ...................................................................................................................................... 120

การสราง sitemap.xml ใน Yii Framework สงให Google Webmaster Tool และ Search

Engine .................................................................................................................................................. 124

การทาเวบไซตหลายภาษาใน Yii Framework ................................................................................. 128

การ Upload ไฟลรปภาพ ................................................................................................................... 131

การสรางเมนจากตารางในฐานขอมล MySQL................................................................................ 133

การสราง WebService ดวย SOAP ............................................................................................... 135

ดรรชน ................................................................................................................................................. 138

Page 7: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 6 ~

www.programmerthailand.com

บทท 1 ขนพนฐาน

การตดตง Yii Framework

กอนอนขอนาเสนอเรองของการตดตง Yii Framework กนกอนนะครบ เพอใหสามารถ

เรยนรและเขาใจไดมากยงขน

การดาวโหลด

ในการดาวโหลดนนไปทเวบไซต http://www.yiiframework.com

แลวคลกทปม Download Yii เพอทาการดาวโหลด

การตดตง

ในการตดตงนนในทนเราจะตดตง Yii Framework ใหเขากบ WAMP Server โดยสามารถ

ดาวโหลดและตดตง WAMP Server ไดทเวบไซต www.wampserver.com ในทนตดตงไวท

d:\wamp

Page 8: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 7 ~

www.programmerthailand.com

หลงจากทดาวโหลด Yii Framework เรยบรอยแลว ใหแตก Zip ไฟลไปยง d:\wamp\yii

จากนนไป Set System Variable ในสวนของ Path โดยไปท Control Panel -> System and

Security

จากนนกดท See the name of this computer

Page 9: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 8 ~

www.programmerthailand.com

กดเลอก Advanced system settings

Page 10: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 9 ~

www.programmerthailand.com

กดเลอก Environment Variables…

เลอก Path ในสวนของ System variables แลวกด Edit…

จากนนนา Path ของ PHP และ Framework มาใส ในทนคอ

D:\wamp\bin\php\php5.3.13; D:\wamp\yii\framework;

หมายเหต Version ของ PHP นนอาจแตกตางกนได และหลงจากตงคาเสรจเรยบรอยแลวอาจจะ

ตอง Restart กอนจงจะสามารถใชคาสง yiic ได

Page 11: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 10 ~

www.programmerthailand.com

การสราง Project Skeleton การสราง Project Skeleton หรอการสรางโครงสรางไฟลตางๆ ของ Application ใหม

กอนการเขยนโปรแกรม โดยเปดโปรแกรม Command Prompt แลว CD ไปท D:\wamp\www

จากนนพมพคาสงสาหรบการสราง Project Skeleton ดงน yiic webapp myyiiapp สาหรบ

myyiiapp คอชอ Project เรานนเอง

จากนนกดปม Enter แลวกด yes เพอสราง กจะไดโครงสรางไฟลตางๆ ดงน

Page 12: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 11 ~

www.programmerthailand.com

การสราง Project ใน Netbeans IDE Netbean IDE เปน Software ทเปน Integrated Development Environment หรอ

สภาพแวดลอมของการพฒนา Application เราโดยสามารถดาวโหลดไดท

http://www.netbeans.org การสราง Project ใน Netbean นนไปท File->New Project

จากนนเลอก PHP Application with Existing Sources

จากนน Browse ไปยง Folder myyiiapp

แลวกดปม Finish จะเหนวาดานซายมอมรายการไฟลตางๆ ใน Project เรยบรอยแลว

Page 13: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 12 ~

www.programmerthailand.com

หมายเหต สาหรบ Yii Framework จะม PlugIn ใน Netbeans IDE ซงสามารถดาวโหลดมาตดตง

ไดฟร จะชวยใหสามารถเรยกใชงาน Library ของ Yii Framework ไดงายยงขน ดาวโหลดไดท

http://plugins.netbeans.org/plugin/47246/php-yii-framework-netbeans-phpcc

การตดตง ไปท Tools->PlugIns

จากนนไปท Tab Downloaded

แลวกด Add Plugins… เลอก PlugIn ทดาวโหลด แลวกด Install

Page 14: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 13 ~

www.programmerthailand.com

การตดตง Yii Snippets ใน Sublime Text 3

Sublime Text 3 เปน Editor อกตวหนงทนาสนใจ เนองจากสามารถใชไดฟร และมความ

รวดเรวใจการเปดใชงาน

ใน Sublime Text 3 จะม Code ลกษณะ Auto Complete ทเรยกวา Snippet อย

สาหรบวธการใชงาน เชนพมพ hlink แลวกด tab กจะปรากฏ Code <?php echo

CHtml::link('text', array(), array('optionName'=>optionValue)); ?> ขนมาใหทนท

สาหรบ Snippet สาหรบ Yii Framework นนสามารถดาวโหลดไดท

https://github.com/dexnode/sublime-yii-snippets

สาหรบการตดตงใหไปทเมน Preferences->Browse Packages…

Page 15: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 14 ~

www.programmerthailand.com

จากนนนา snippets ทดาวโหลดมาวางใน Folder User

สาหรบการเรยกใชงานใหดคาสงไดทเมน Tools->Snippets… กจะปรากฏคาสงตางๆ ขนมา

สาหรบการสราง Project ใน Sublime Text3 นนงายๆ เพยงแคเลอก File->Open Folder ก

สามารถเปด Project ไดทนท

Page 16: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 15 ~

www.programmerthailand.com

การตดตง Yii Eclipse PlugIn

Eclipse กเปน IDE ตวหนงทเราสามารถนามาเขยน PHP ได แตตองตดตง Eclipse PDT

PlugIn เขาไปดวย โดยสามารถดาวโหลดไดจากเวบไซต www.eclipse.org

สาหรบการตดตง Eclipse PDT PlugIn นนเมอตดตง Eclipse เสรจเรยบรอย เปด Eclipse

แลวไปทเมน Help->Install New Software จากนนใส URL

http://download.eclipse.org/tools/pdt/updates/release แลวกดปม Add...

จากนนจะปรากฏขอมลดงภาพ

กดปม Next… ไดเลย

Page 17: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 16 ~

www.programmerthailand.com

Page 18: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 17 ~

www.programmerthailand.com

จะปรากฏราละเอยดการตดตง กดปม Next…

กดปมยอมรบการใชงาน แลวกดปม Next…

Page 19: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 18 ~

www.programmerthailand.com

แลวกดปม Finish แลวกดปม Yes เพอ Restart Eclipse

สาหรบ Eclipse IDE นนกม PlugIn สาหรบ Yii Framework เชนกนโดยมเวบไซต

http://yiiclipse.maziarz.org/ เปนเวบไซตผพฒนา

สาหรบการตดตง Yii Eclipse PlugIn นนไปทเมน Help->Install New Software…

วาง Link http://yiiclipse.maziarz.org/updatesite/STABLE/ ทชอง Work with: จากนนกดปม

Add…

Page 20: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 19 ~

www.programmerthailand.com

จากนนตงชอ Yii (ทจรงชออะไรกไดครบ) แลวกดปม OK

จะปรากฏขอมลดงภาพ

จากนนกดปม Next… จะปรากฏรายละเอยด

กดเลอกยอมรบขอตกลงแลวกดปม Next…

จากนนจะปรากฏขอความเตอนกด OK

แลวกทาการ Restart Eclipse จากนนกสามารถใช Eclipse กบ PHP และ Yii Framework ไดแลว

ครบ

Page 21: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 20 ~

www.programmerthailand.com

การออกแบบ ER Diagram และการ Forward Engineering สาหรบการออกแบบ ER Diagram หรอ Entity Relationship Diagram นนเปนการ

ออกแบบ Entity หรอตารางในการเกบขอมลในฐานขอมล MySQL นนเองโดยจะใชโปรแกรมของ

MySQL ทมชอวา MySQL Workbench ซงสามารถดาวโหลดไดท

http://www.mysql.com/products/workbench/ โดยสามารถดาวโหลดและตดตงไดฟร

การออกแบบ ER Diagram

สราง Project ใหม ไปทเมน File->New Model แลวเปลยนชอ Schema หรอชอฐานขอมลตามท

ตองการ

Page 22: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 21 ~

www.programmerthailand.com

แลวคลกท Add Diagram

แลวใชเครองมอ Create New Table เพอสรางตารางหรอ Entity ใหม

โดยกาหนดใหมลกษณะของตารางดงน คอ

• Field แรกมชอวา id เปน Primary Key และเปน Auto Increment

• ใสรายละเอยดทงหมด เชน ชนด ความยาว และใสความเหน (Comment) ของแตละ Field

ดวย *** สาคญมาก ตอนทใช Gii Generator ***

Page 23: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 22 ~

www.programmerthailand.com

ใชเครองมอความสาพนธ (Relation) เพอสรางความสมพนธแบบตางๆ

เมอได Diagram ทตองการแลวจะมลกษณะดงน

Page 24: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 23 ~

www.programmerthailand.com

การสรางฐานขอมล

กอนการ Forward Engineering นนใหทาการสรางฐานขอมลกอน โดยเขา

http://127.0.0.1/phpmyadmin หรอ http://localhost/phpmyadmin

Page 25: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 24 ~

www.programmerthailand.com

จากนนคลกท Database แลวใสชอฐานขอมลตามตองการ ในทนคอ myyiiapp แลวเลอการ

เขารหสตวอกขระใหเปน utf8_unicode_ci แลวกด Create

จะปรากฏกลองขอความสเขยวบอกวาไดสรางฐานขอมล myyiiapp เรยบรอยแลว

การ Forward Engineering

การ Forward Engineering เปนการนาโครงสรางจาก ER Diagram ไป Create ใน

ฐานขอมลจรง โดยไปทเมน Database->Forward Engineer

Page 26: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 25 ~

www.programmerthailand.com

จะปรากฏขนตอนของการเชอมตอ ใหคลก Next ไปไดเลย

จะปรากฏ Option เสรม เพอเลอกวาจะลบตารางเกาออกจากฐานขอมลหรอเปลา ขนตอนนคลก

Next ไดเลย

Page 27: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 26 ~

www.programmerthailand.com

จากนนจะปรากฏการกรอง วาจะ Forward อะไรไปบางในทนใชหมดทกอยางใหคลก Next ไปไดเลย

จะปรากฏรายการคาสง SQL ซงสามารถ Copy ไวได ในทนกด Next ไปไดเลย

Page 28: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 27 ~

www.programmerthailand.com

จะปรากฏผลลพทของการ Forward Engineering เรยบรอยแลว โดยจะสงเกตเหนคาวา Forward

Engineer Finished Successfully

Page 29: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 28 ~

www.programmerthailand.com

กเปนอนเสรจเรยบรอยสาหรบการสรางฐานขอมลและการ Forward Engineering

พจนานกรมขอมล (Data Dictionary)

orders

Table comments: orders

Column Type Null Default Comments

id int(11) No

order_date datetime No วนทสงซอ

total int(11) No รวมเปนเงน

user_id int(11) No ผสงซอ

first_name varchar(100) No ชอผรบ

last_name varchar(100) No นามสกลผรบ

order_address text No ทอยผรบ

order_province varchar(100) No จงหวดผรบ

order_zipcode varchar(5) No รหสไปรษณยผรบ

orders_has_products

Table comments: orders_has_products

Column Type Null Default Comments

order_id int(11) No ใบสงซอ

product_id int(11) No สนคา

quantity int(11) No จานวน

price int(11) No ราคา

product_types

Table comments: product_types

Column Type Null Default Comments

id int(11) No

Page 30: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 29 ~

www.programmerthailand.com

product_type varchar(100) No ประเภทสนคา

products

Table comments: products

Column Type Null Default Comments

id int(11) No

product_name varchar(100) No ชอสนคา

product_price int(11) No ราคาสนคา

product_type_id int(11) No ประเภทสนคา

users

Table comments: users

Column Type Null Default Comments

id int(11) No

firstname varchar(100) No ชอ

lastname varchar(100) No นามสกล

username varchar(45) No Username

password varchar(45) No Password

address text No ทอย

province enum('กรงเทพมหานคร', 'อบลราชธาน') No จงหวด

zipcode varchar(5) No รหสไปรษณย

created datetime No สมครสมาชกเมอ

user_type enum('admin', 'user') No user ประเภทผใช

Page 31: หนังสือ Yii framework Tip 50 เทคนิค Yii Framework

~ 30 ~

www.programmerthailand.com

การสราง Attribute Label ใหเปนภาษาไทยโดยอตโนมต หลงจากทมการออกแบบ ER Diagram และทาการ Forward Engineering เรยบรอยแลว

ขนตอนถดมาจะเปนเรองของการ Generate Code ดวย Gii Generator โดยเขา URL

index.php?r=gii จะปรากฏชองสาหรบกรอก Password ใหทาการกรอก Password ตามทไดตงไว

ใน protected/config/main.php

ไปทเมน Model Generator

แลวใสเครองหมาย * เพอสรางทกๆ Model