mvc with laravel - eimaung.com · ဆေကမလကမပပြပြီး laravel php framework...

25
MVC with Laravel Copyright 2016, Ei Maung, Fairway Web Development. © License - CC-BY-NC-SA This document, “MVC with Laravel” is licensed under a Creative Commons Attribution- NonCommercial-ShareAlike 3.0 Unported License. This document is free to share, copy, distribute and transmit. And, also allow to remix or adapt to this document. But, you must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). And, you may not use this work for commercial purposes. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one. For any reuse or distribution, you must make clear to others the license terms of this work. THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED - http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode

Upload: nguyenthuy

Post on 27-Aug-2019

281 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

MVC with Laravel

Copyright 2016, Ei Maung, Fairway Web Development.©

License - CC-BY-NC-SA

This document, “MVC with Laravel” is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

This document is free to share, copy, distribute and transmit. And, also allow to remix oradapt to this document. But, you must attribute the work in the manner specified by theauthor or licensor (but not in any way that suggests that they endorse you or your use ofthe work). And, you may not use this work for commercial purposes. If you alter, transform,

or build upon this work, you may distribute the resulting work only under the same orsimilar license to this one.

For any reuse or distribution, you must make clear to others the license terms of this work.

THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USEOF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW

IS PROHIBITED - http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode

Page 2: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

MVC with LaravelProfessional Web Developer (တတတိယအကကတိမမ) မမှ ကကာကမနနှုတမကဖောမပပြသညမ။

M-V-C (Model-View-Controller)MVC လလ လတိ အတလ တိကကာကမကခေါ်ကကတလ တ Model-View-Controller ဟာ Application Project မမှ ာပြါဝငမတလ တ Code ကတတွေ ကလ တိလလ ပြမကဆောငမခေချကမ ကဏ္ဍအလလ တိကမ ခေတတွေ ပခေားစလ စညမးရာမမှ ာအသသလ းပပြတလ တ Pattern တစမခေလ ပဖေစမပြါတယမ။ MVC Pattern က Code ကတတွေ ကလ တိModel, View နလတ Controller ဆေလ တိပပြပြီး အလ ပြမစလ သသလ းစလ ခေတတွေ ပခေားစလ စညမးဖေလ လတိအကကသ ပပြထားပြါတယမ။ အကကသ ပပြတယမလလ လတိ သသလ းရပခေငမးက MVC ဟာသကဘောတရားတစမခေလ သာပဖေစမလလ လတိ ၊ သတမမမှ တမခေချကမအတလ တိငမး တတိတတိကချကချလလ တိကမနာပခေငမး မလလ တိကမနာပခေငမးက ကကျွနမကတာမ တလ လတိကရးသားသသူအကပြါ်မသူတညမကနတလ တအတတွေကမ ပဖေစမပြါတယမ။ တစမခေချ တိိ လလညမး တညမကဆောကမကနတလ တ Software ရ လတသဘောဝလလ တိအပြမ ခေချကမအရ မသူလ MVC သတမမမှ တမခေချကမမချားကလ တိ သငမလ ကတာမသလလ တိပပြပပြငမပပြပြီးမမှ အသသလ းခေချကကတာကတတွေလညမးရတိမှ ပြါတယမ။

MVC ဟာ ၁၉၇၀ ကာလမချားကတညမးက Smalltalk Programming Language နလတအတသူ စတငမအသသလ းပပြလာခေလ တတလ တ Pattern တစမခေလပဖေစမပြါတယမ။ General Purpose Pattern တစမခေလ ပဖေစမပပြပြီး Software အမချ တိိးအစား အားလသလ းအတတွေကမ အသသလ း ပပြနလ တိငမပြါတယမ။ ဒါကပြမယမလWeb Application Development အတတွေကမ ပြလ တိ ပပြပြီးအသသလ းမချားပြါတယမ။

MVC WorkflowMVC ရ လတအဓတိကရညမရတွေယမခေချကမက Model နလတ View ကလ တိခေတတွေ ပခေားထားလလ တိပခေငမးပဖေစမပြါတယမ။ Application ရ လတ Domain Logic နလတ အဓတိကလလ ပြမကဆောငမခေချကမကတတွေကလ တိ Model အကနနလတစလ စညမးကရးသားထားရမမှ ာ ပဖေစမပြါတယမ။ Model ဟာ Application ရ လတ ဦပြီးကနမှ ာကမလလ လတိလညမး ဆေလ တိနလ တိငမပြါတယမ။ ကပြးလာတလ တ Input တနမဖေလ တိးကလ တိ လကမခေသ ပပြပြီးကဆောငမရတွေကမရနမရတိမှ တလ တ လလ ပြမငနမးကတတွေကလ တိ Model က ကဆောငမရတွေကမပြါတယမ။ ပပြပြီးရငမ ရရတိမှ လာတလ တ ရလဒမကလ တိပပြနမထလ တမကပြးနလ တိငမပြါတယမ။ ဒါကပြမယမလ အတဒပြီရလဒမမချားကလ တိ ဘေယမလလ တိပြသလ စသ ၊ ဘေယမလလ တိအပပြငမအဆေငမမချ တိိးနလတ ကဖောမပပြရမလတဆေလ တိတလ တကတိစစ္စကလ တိModel က ကဆောငမရတွေကမမကပြးပြါဘေသူ း။ ဒါက View ရ လတအလလ ပြမပဖေစမပြါ တယမ။

View ကကတာလ Model နလတဆေနမလကချငမဘေကမပဖေစမပြါတယမ။ လလ ပြမငနမးပြလ တိငမးကလ တိစတိတမမဝငမစားပြတ ကပြးလာတလ တအခေချကမအလကမ မချားကလ တိသသလ း ပပြပြီးသတမမမှ တမထားတလ တ Presentation ပြသလ စသ နလတ ကဖောမပပြကပြးတလ တအလလ ပြမကလ တိသာ ကဆောငမရတွေကမကပြးမမှ ာပဖေစမပြါတယမ။ ဒပြီကတာလ တစမကယမလ Logic ကModel ထတမမှ ာရတိမှ ကနပပြပြီး ကဖောမပပြရမယမလ Presentation ပြလ တိငမးကတိစစ္စကတတွေက View ထတမမှ ာ သပြီးပခေားရတိမှ ကနကစမမှ ာ ပဖေစမပြါတယမ။ Decouple လလ ပြမလလ တိကမပခေငမးတစမမချ တိိးပဖေစမပြါတယမ။ ဒပြီလလ တိမချ တိိး Model နလတ View တလ လတိက သသူ လ အလလ ပြမကလ တိသသူ သပြီးပခေားစပြီကဆောငမ ရတွေကမကနတလ တအခေါ Maintenanceအတတွေကမအဆေငမကပပြသတွေားကစမမှ ာပဖေစမပြါတယမ။ ကဖောမပပြပြသလ အပပြငမအဆေငမပြလ တိငမးသကမသကမပပြပပြငမ လလ တိရငမ View ကလ တိ ပပြငမနလ တိငမပြါတယမ။ ဒပြီလလ တိပပြငမလလ တိကမလလ လတိ Logic ပြလ တိငမးကလ တိထတိခေလ တိကမသတွေားမမှ ာပြသူ စရာမလလ တိကတာလ ပြါဘေသူ း။ အလားတသူပြတ Logic ပြလ တိငမး အလလ ပြမလလ ပြမပြသလ ကလ တိ ပပြပပြငမလလ တိတာဆေလ တိရငမ Model ကလ တိပပြငမနလ တိငမပြါတယမ။ ကဖောမပပြပြသလ Presentation ကလ တိထတိခေလ တိကမမမှ ာ ပြသူစရာမလလ တိ ကတာလ ပြါဘေသူ း။

အဓတိကလလ တိရငမးက View နလတ Model ကလ တိခေတတွေ ပခေားလလ တိပခေငမးပဖေစမကပြမယမလ လကမကတတွေ လမမှ ာဒပြီနမှ စမခေလ ကလ တိ ကပြါငမးကသူ းဆေကမစပြမကပြးနလ တိငမမယမလ အစတိတမအပြလ တိငမးတစမခေလ လလ တိအပြမလာပြါတယမ။ ဒပြီတာဝနမကလ တိ Controller က ယသူကပြးပြါတယမ။ Controller က ကကားပြတတွေစား ဆေလ တိ ကကပြါစလ လတိ ။ သသူကလ တိယမတလ တိငမက တစမကယမလလလ ပြမကဆောငမခေချကမကတတွေ ဘောမမှ မလလ ပြမကပြမယမလ အသသလ းပပြသသူနလတတလ တိကမရလ တိကမဆေကမဆေသ ရတာက Controller ပဖေစမပြါတယမ။ အသသလ းပပြသသူ ပပြလလ ပြမတလ တAction ကလ တိ ကကညမလ ပပြပြီးကတာလ လလ တိအပြမတလ တလလ ပြမကဆောငမခေချကမကတတွေကလ တိ Model ကလ တိ ကဆောငမရတွေကမကစပြါတယမ။ Model ပပြနမကပြးလာတလ တ ရလဒမကလ တိ ၊View ထသ လကမဆေငမလ ကမမးကပြးပြလ လတိ ပပြပြီး သငမလ ကတာမတလ တ ကဖောမပပြမနှုပြသလ စသ နလတ ကဖောမပပြ ကပြးဖေလ လတိ ကတာငမးဆေလ တိကပြးပြါတယမ။ View ကပပြနမလညမ ကပြးပြလ လတိလာတလ တအပပြပြီးသတမပပြငမ ဆေငမပပြပြီးရလဒမကလ တိ အသသလ းပပြသသူထသ ပပြနမကပြးနလ တိငမ ပြါတယမ။

တနညမးကပပြာရရငမ Controller က Input မချားကလ တိလကမခေသ စပြီမသ ပပြပြီး Output မချားပပြနမလညမကပြးပြလ လတိ ပခေငမးအပြလ တိငမးကလ တိ Model နလတ View ကကားထတကကနဝငမပပြပြီး ကဆောငမရတွေကမကပြးသတွေားတလ တသကဘောပဖေစမပြါတယမ။ Web Application ကတတွေမမှ ာကတာလ Input ဆေလ တိတာ Request မချားပဖေစမပပြပြီး၊

Page 3: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

Output ဆေလ တိတာ Respond မချားပြတပဖေစမပြါတယမ။ ဒပြီကတာလ Web Application ကတတွေမမှ ာ Controller က Request နလတ Respond စပြီမသ ပခေငမးကဏ္ဍကလ တိတာဝနမယသူသသူ ပဖေစမတယမလလ လတိ ဆေလ တိနလ တိငမပြါတယမ။

MVC ဟာ နညမးစနစမတစမခေလ မမျှသာပဖေစမပြါတယမ။ အတတိအကချလလ တိကမနာလလ တိက လလ တိကမနာနလ တိငမပပြပြီး မလလ တိကမနာလလ တိရငမ မလလ တိကမနာပြတလညမး ကနနလ တိငမပြါတယမ။ ဒါကပြမယမလ သသူ လရ လတအားသာခေချကမကလ တိ အပပြညမလ အဝရရတိမှ ဖေလ လတိဆေလ တိရငမ Model, View နလတ Controller တလ လတိရ လတ သကမဆေလ တိငမရာ တာဝနမကတတွေကလ တိမမှ နမကနမကအာငမ သတမမမှ တမဖေလ လတိလလ တိအပြမပြါတယမ။ View ထတမမှ ာ Logic နလတပြကမသကမတလ တ Code ကတတွေကရးထားရငမ Program ကကတာလ အလလ ပြမလလ ပြမကနမမှ ာပြါပြတ။ အလားတသူပြတ Controller ထတမမှ ာ Logic ကတတွေ ကရာ ကရးထားမယမ၊ Model ထတမမှ ာ ကဖောမပပြရမယမလ ပြသလ စသကလ တိ သတမမမှ တမထားမတိမယမဆေလ တိရငမလညမး Program က အလလ ပြမလလ ပြမကနမမှ ာပြါပြတ။ ဒါကပြမယမလ ကကျွနမကတာမတလ လတိရ လတ Logic နလတ Presentation ကလ တိခေတတွေထားလလ တိပခေငမးရညမရတွေယမခေချကမကလ တိ ထတိခေလ တိကမကနပြါပပြပြီ။ MVC လလ လတိကပပြာကနကပြမယမလ MVC ရ လတ Pattern ပြချကမကနလလ လတိ ထတိကရာကမသငမလ သကလာကမ ထတိကရာကမမမှ ာမဟလတမကတာလ ပြါဘေသူ း။

MVC ရ လတ အကပခေခေသအလလ ပြမလလ ပြမပြသလ ကလ တိ ပြလ တိမလ တိ ပမငမသာကအာငမ ကအာကမပြါပြသလ မမှ ာ ကလလလာနလ တိငမပြါတယမ။

ပြသလ မမှ ာ Order List ကဖောမပပြပခေငမးလလ ပြမငနမးစဦမကလ တိ ဦပြမာအကနနလတကဖောမပပြထားပြါတယမ။ Order List ရယသူလလ တိကကကာငမး Request ဝငမကရာကမလာတလ တအခေါ Controller ကလကမခေသ ပပြပြီး Model ထသကကန အမမှ ာစာစာရငမးကလ တိကတာငမးယသူပြါတယမ။ ရရတိမှ လာတလ တ Order List ကလ တိ View ထသလကမဆေငမလ ကမမးကပြးလလ တိကမပြါတယမ။ View က Format လလ ပြမထားတလ တ Layout တစမခေလ အကနနလတ Order List ကလ တိ ပပြနမလညမကပြးပြလ လတိကတာလ မမှ အလ တဒပြီFormat လလ ပြမထားပပြပြီးရလဒမကလ တိ Respond အကနနလတပပြနမ လညမကပြးပြလ လတိလလ တိကမပခေငမးပဖေစမပြါတယမ။

MVC with Laravelဆေကမလကမပပြပြီး Laravel PHP Framework ကလ တိ အသသလ းပပြပပြပြီး MVC ပြသလ စသ ကရးသားပြသလ ကလ တိ ကဖောမပပြသတွေားမမှ ာ ပဖေစမပြါတယမ။ Laravel ဟာလကမရတိမှ အခေချတိနမမမှ ာကတာလ လသူသသလ းအမချားဆေသလ း PHP Framework ကတတွေထတကတစမခေလ ပဖေစမပြါတယမ။ ဒပြီစာကရးသားကနခေချတိနမမမှ ာ ကနာကမဆေသလ းထတွေကမရတိမှ ထားတလ တ Version ကကတာလ Laravel 5.1 ပဖေစမပြါတယမ။

Laravel ဟာ သသူ လရ လတ သပြမရပြမရမှ ငမးလငမးပပြပြီး ဖေတတွေ လစညမးပြသလ စနစမကချတလ တ Code ကပြါ်မမှ ာ အလတွေနမဂလ ဏမယသူ ပပြပြီး၊ Laravel ကလ တိ အမချား နမှ စမသကမရပခေငမး

Page 4: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

အဓတိကအကကကာငမးရငမးကလညမး၊ အလ တဒပြီလလ တိ သပြမရပြမရမှ ငမးလငမးပပြပြီး ဖေတတွေ လစညမးပြသလ စနစမကချတလ တ Code ကကကာငလ မပြတ ပဖေစမပြါတယမ။ PHP ဟာLanguage Design ပြလ တိငမး အားနညမးမနှုကတတွေရတိမှ တယမလလ လတိ ကဝဖေနမခေသ ရကလလ ရတိမှ တလ တ Language တစမခေလ ပဖေစမပြါတယမ။ အခေလ ကနာကမပြလ တိငမးမမှ ာကတာလ ၊ PHPက Language Design အားနညမးတယမလလ လတိကပပြာခေချငမရငမ Laravel ကလ တိ ကကညမလ ပပြပြီးမမှ ကပပြာပြါလလ လတိ ဆေလ တိရကလာကမကအာငမ သသူ လရ လတ စနစမကချသပြမရပြမမနှုက စသ ပပြပဖေစမလာခေလ တပြါတယမ။

Laravel ရ လတ အပခေား ထသူ းပခေားအသသလ းဝငမတလ တ အခေချကမကတတွေကကတာလ ၊ ကနာကမပြလ တိငမး PHP Version ကတတွေမမှ ာ ပြါဝငမလာတလ တ Namespace, PHPDevelopment Server စတလ တ လလ ပြမကဆောငမခေချကမကတတွေကလ တိ ထတိကရာကမကအာငမအသသလ းခေချထားပခေငမး၊ Composer လလ လတိကခေါ်တလ တ အမချားနမှ စမသကမတလ တPackage Management စနစမတစမခေလ အသသလ းခေချထားပခေငမး၊ Database ဆေလ တိငမရာ လလ ပြမငနမးကတတွေ စနစမကချ လတွေယမကသူကစဖေလ လတိအတတွေကမ Eloquentလလ လတိကခေါ်တလ တ ORM (Object Relational Mapping) နညမးပြညာကလ တိ အသသလ းခေချထားပခေငမး၊ Blade လလ လတိ ကခေါ်တလ တ Template Engine တစမခေလ ကလ တိအသသလ းပပြထားပခေငမး၊ Authentication စနစမ တစမခေါတညမး ပြါဝငမပခေငမး၊ Development Environment တညမကဆောကမပခေငမးနလတ Deploymentလတွေယမကသူကစဖေလ လတိအတတွေကမ Homestead လလ လတိ ကခေါ်တလ တ Virtualization အကပခေပပြ နညမးပြညာ ဖေနမတပြီးကပြးထားပခေငမး၊ စသပဖေငမလ ထသူ းပခေားခေချကမကပြါငမးမချားစတွော ပြါဝငမပြါတယမ။ ဒပြီအကကကာငမး အရာအားလသလ းကလ တိကတာလ ဒပြီကနရာမမှ ာ ကဖောမပပြနလ တိငမမမှ ာ မဟလတမပြါဘေသူ း။ ဒပြီကနရာမမှ ာ Laravel ကလ တိ အသသလ းပပြပပြပြီးMVC Code ကတတွေ ဘေယမလလ တိကရးနလ တိငမသလတဆေလ တိတလ တ အပြလ တိငမးကလ တိသာ ကဖောမပပြကပြးသတွေားမမှ ာပဖေစမပြါတယမ။ စတငမကလလလာသသူတစမဦပြီးအကနနလတ ခေချကမပခေငမးအလလ ပြမ ပဖေစမကစဖေလ လတိအတတွေကမ လလ တိအပြမတလ တအပြလ တိငမးကတတွေကလ တိ ကရတွေးထလတမကဖောမပပြပပြပြီး ကချနမနညမးပြညာကတတွေကလ တိကတာလ ကလ တိယမတလ တိငမ ဆေကမလကမကလလ လာသတွေားနလ တိငမကစဖေလ လတိ ရညမရတွေယမပခေငမးပဖေစမပြါတယမ။

14.1 – Installing LaravelLaravel Framework ကလ တိ အသသလ းပပြနလ တိငမဖေလ လတိအတတွေကမ PHP 5.5.9 နလတအထကမရတိမှ ဖေလ လတိ လလ တိအပြမပြါတယမ။ PDO, Mbstring, Tokenizar စတလ တ PHPExtension ကတတွေလညမး Requirement အကနနလတ လလ တိအပြမကပြမယမလ XAMPP မမှ ာ အလ တဒပြီ Package ကတတွေက ပြါဝငမပပြပြီးပဖေစမပြါတယမ။ ဒါကကကာငမလXAMPP ကနာကမဆေသလ း Version ကလ တိ ရယသူထညမလ သတွေငမးလလ တိကမရငမ Laravel အတတွေကမ လလ တိအပြမတလ တ Environment ပပြညမလ စသလ ပပြပြီလလ လတိ ဆေလ တိနလ တိငမပြါတယမ။XAMPP ကနာကမဆေသလ း Version ကလ တိ ကအာကမပြါလတိပြမစာမမှ ာ Download ရယသူနလ တိငမပြါတယမ။

http://apachefriends.org

Laravel ကလ တိ Install လလ ပြမဖေလ လတိအတတွေကမ နညမးလမမးမမှ နမကကတာလ Composer လလ လတိကခေါ်တလ တ Package Manager ကကနတစမဆေငမလ Install လလ ပြမပခေငမးပြတ ပဖေစမပြါတယမ။ ဒါကပြမယမလ ဒပြီကနရာမမှ ာ Composer အကကကာငမး အကချယမမခေချ လတ ခေချငမတလ တအတတွေကမ တလ တိကမရလ တိကမပြတ Download ရယသူတလ တနညမးလမမးကလ တိပြတ အသသလ းပပြသတွေားမမှ ာ ပဖေစမပြါတယမ။ ဒါဟာ နညမးလမမးမမှ နမ မဟလ တမကပြမယမလ ၊ ကကျွနမကတာမတလ လတိလလ တိ ပမနမနနှုနမးပမငလ မ အငမတာနကမမရတိမှ သသူ ကတတွေအတတွေကမ ပြလ တိလတွေယမပြါတယမ။ အငမတာနကမမရတိမှ လတ ဖေလ တိငမကလ တိ ကသူ းယသူအသသလ းပပြနလ တိငမတလ တအတတွေကမ ပဖေစမပြါတယမ။ Composer ကကန Install လလ ပြမရငမကတာလ အငမတာနကမ အဆေကမအသတွေယမလလ တိသလလ တိ သငမလ တငမလ တလ တ ပမနမနနှုနမးနလတ တညမပငတိမမမနှု လညမးလလ တိနလ တိငမပြါတယမ။ အငမတာနကမမပငတိမမလလ လတိ လလ တိအပြမတလ တPackage ကတတွေ မစသလ ရငမ အခေကမအခေတကတတွေနလတ ကကသ ကတတွေ လရမမှ ာ ပဖေစမပြါတယမ။

Laravel နလတ ဆေကမစပြမလလ တိအပြမတလ တ Package အားလသလ းကလ တိ စလ စညမးကပြးထားတလ တ Larapack လလ လတိကခေါ်တလ တ Project တစမခေလ ရတိမှ ပြါတယမ။ အလ တဒပြီLarapack ကလ တိ ကအာကမပြါလတိပြမစာမမှ ာ Download ရယသူနလ တိငမပြါတယမ။

http://fian.my.id/larapack/

Download ရရတိမှ လာတလ တ Zip ဖေလ တိငမကလ တိပဖေညမကကညမလ လလ တိကမရငမ larapack ဆေလ တိတလ တ Directory တစမခေလ ထတမမှ ာ အခေလ လလ တိ ဖေလ တိငမနလတ Directory ကတတွေပြါဝငမလာတာကလ တိ ကတတွေ လရမမှ ာ ပဖေစမပြါတယမ။

larapack├── app│ ├── Commands│ ├── Http│ ├── Models│ ├── Services│ └── User.php├── artisan├── bootstrap├── composer.phar├── config│ ├── app.php│ ├── auth.php

Page 5: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

│ ├── database.php│ ├── session.php│ └── view.php├── database├── public│ ├── css│ └── index.php├── resources│ └── views├── server.php├── storage├── tests└── vendor ├── autoload.php ├── composer ├── doctrine ├── laravel ├── monolog ├── phpdocumentor ├── phpspec ├── phpunit ├── swiftmailer └── symfony

ပြါတလ တဖေလ တိငမကတတွေအရမမးမချားလလ လတိ ကလမျှာလ ပပြပြီး ပပြထားတာပြါ။ လကမကတတွေ လကကညမလ လလ တိကမရငမ ဒပြီထကမပြလ တိ မချားပြါလတိမမလ ဦပြီးမယမ။ ရရတိမှ လာတလ တ larapackDirectory ကလ တိ XAMPP Document Root (htdocs) ကအာကမမမှ ာ ထားလလ တိကမပပြပြီး Laravel Framework ကလ တိ စတငမအသသလ းပပြဖေလ လတိအတတွေကမ အသငမလ ပဖေစမပပြပြီပဖေစမပြါတယမ။ Web Browser ဖေတွေငမလ ပပြပြီး localhost/larapack/public လလ လတိ ထညမလ သတွေငမးကကညမလ လလ တိကမရငမအခေလ လလ တိ ကတတွေ လရမမှ ာပဖေစမပြါတယမ။

Laravel စတငမ အလလ ပြမလလ ပြမကနပပြပြီဆေလ တိတလ တသကဘော ပဖေစမပြါတယမ။ URL မမှ ာ public Directory ကလ တိ ညညွှနမးထားတာကလ တိ သတတိပပြပြါ။ ကချနမဖေလ တိငမနလတ Folder ကတတွေက App Source Code နလတ လလ တိအပြမတလ တ ဆေကမစပြမ Package ကတတွေပဖေစမပပြပြီး၊ ကနာကမဆေသလ းရလဒမကလ တိကတာလ publicDirectory ကကန ရရတိမှ မမှ ာပဖေစမပြါတယမ။

ကရ လမှ ဆေကမမသတွေားခေငမ သတတိပပြသငမလ တလ တ ဖေလ တိငမနလတ Directory ကတတွေအကကကာငမးကလ တိ အရငမကလလလာခေချငမပြါတယမ။

Page 6: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

/app ကလ တိယမလ Application ရ လတ Source Code အမချားစလ ဟာ ဒပြီ Directory ထတမမှ ာ ကရးသားရမမှ ာပဖေစမပြါတယမ။ app အတတွေငမးမမှ ာ Console, Events, Http စတလ တ အကပခေခေသလလ ပြမကဆောငမခေချကမကတတွေကလ တိ ကကတိတငမကရးသားကပြးထားတလ တ Directory ကတတွေ ပြါဝငမပြါကသးတယမ။ တညမကဆောကမမယမလ Application ရ လတ Model Code ကတတွေကလ တိ ဒပြီDirectory အတတွေငမးမမှ ာ သကမဆေလ တိငမရာ Directory ကတတွေ ထပြမခေတတွေ ပပြပြီး ထညမလ သတွေငမးကရးသားနလ တိငမပြါတယမ။

/app/Http/Controllers MVC မမှ ာ Controller ရ လတ တာဝနမဟာ Requests/Responses ကတတွေ စပြီမသ ပဖေစမပဖေစမကကကာငမး ကဖောမပပြခေလ တပပြပြီး ပဖေစမပြါတယမ။ Controller Code ကတတွေကလ တိ ဒပြီDirectory ထတမမှ ာ စလ စညမး ကရးသားရမမှ ာ ပဖေစမပြါတယမ။

/app/Http/routes.php URI လမမးကကကာငမးကတတွေ စပြီမသတလ တလလ ပြမငနမးကလ တိ ဒပြီဖေလ တိငမမမှ ာ သတမမမှ တမရမမှ ာ ပဖေစမပြါတယမ။Controller နလတ တတတွေဖေကမအလလ ပြမလလ ပြမမမှ ာ ပဖေစမပြါတယမ။ ဘေယမ URI ကလ တိ လကမခေသ ရရတိမှရငမ ဘေယမ Controller နလတ Action ကလ တိ အလလ ပြမလလ ပြမကပြးရမလတ ဆေလ တိတလ တလမမးကကကာငမးကတတွေကလ တိ သတမမမှ တမကပြးရမမှ ာ ပဖေစမပြါတယမ။

/config Framework Setting ကတတွေကလ တိ ဖေလ တိငမအမညမအလလ တိကမ ဒပြီ Directory ထတမမှ ာ စလ စညမးကပြးထားပြါတယမ။

/config/app.php URL, Timezone, Locale စတလ တ အကပခေခေသ Setting ကတတွေကလ တိ ဒပြီဖေလ တိငမထတမမှ ာ သတမမမှ တမထားပခေငမး ပဖေစမပြါတယမ။ လလ တိအပြမသလလ တိ ပပြငမဆေငမသတမမမှ တမနလ တိငမပြါတယမ။

/config/database.php အသသလ းပပြလလ တိတလ တ Database အမချ တိိးအစား၊ Database အမညမ၊ Username,Password စတလ တ Setting ကတတွေကလ တိ ဒပြီဖေလ တိငမထတမမှ ာ သတမမမှ တမထားပခေငမး ပဖေစမပြါတယမ။လလ တိအပြမသလလ တိ ပပြငမဆေငမသတမမမှ တမနလ တိငမပြါတယမ။

/config/auth.php Laravel နလတအတသူ တစမခေါတညမး တတတွေဖေကမပြါဝငမလာတလ တ Authentication စနစမနလတပြကမသကမတလ တ Setting ကတတွေကလ တိ ဒပြီဖေလ တိငမထတမမှ ာ သတမမမှ တမထားပြါတယမ။

/public Static Resources ကတတွေပဖေစမတလ တ CSS ဖေလ တိငမကတတွေ၊ JavaScript ဖေလ တိငမကတတွေ၊ Fontကတတွေနလတ Logo လလ တိ Image ကတတွေကလ တိ ဒပြီ Directory ထတမမှ ာ စလ စညမးသတမမမှ တမထား ရမမှ ာ ပဖေစမပြါတယမ။

/resources HTML Template, CoffeeScript, LESS, SASS စတလ တ Pre-processorနညမးပြညာကတတွေနလတအတသူ တတတွေဖေကမအသသလ းပပြရမယမလ Source Code ကတတွေကလ တိ ဒပြီDirectory ထတမမှ ာ စလ စညမးထားရပြါတယမ။

/resources/views View Template ကတတွေကလ တိ Blade လလ လတိကခေါ်တလ တ Template Engine သသလ းပပြပြီးကရးသားရတလ တအတတွေကမ View Code ကတတွေကလ တိ ဒပြီ Directory ထတမမှ ာ စလ စညမးကရးသားကပြးရပြါတယမ။

/database SQLite လလ တိ Standard Alone Database ဖေလ တိငမကတတွေနလတ Database Structureကကကပငာသတမမမှ တမထားတလ တ Migration ဖေလ တိငမကတတွေကလ တိ ဒပြီ Directory နလတ စလ စညမးထားရပြါတယမ။

/storage Framework က Generate လလ ပြမလလ တိကမတလ တ Session Data ဖေလ တိငမကတတွေ၊ Cacheဖေလ တိငမကတတွေနလတ Log ဖေလ တိငမကတတွေကလ တိ ဒပြီ Directory ထတမမှ ာ သတိမမးပြါတယမ။ ဒါကကကာငမလ LinuxSystem မမှ ာဆေလ တိရငမ ဒပြီ Directory ကလ တိ Write Permission မမှ နမကအာငမ ကပြးထားဖေလ လတိ လလ တိအပြမမမှ ာ ပဖေစမပြါတယမ။

/vendor Laravel Source Code နလတ Package ဖေလ တိငမကတတွေအားလသလ းကလ တိ ဒပြီ Directory ထတမမှ ာစလ စညမးကပြးထားမမှ ာ ပဖေစမပြါတယမ။

/tests Unit Testing လလ တိ လလ ပြမကဆောငမခေချကမမချ တိိးကလ တိ အသသလ းပပြလလ တိရငမကတာလ Unit TestCode ကတတွေကလ တိ ဒပြီ Directory ထတမမှ ာ စလ စညမးကရးသားနလ တိငမပြါတယမ။

/bootstrap Application ကလ တိ Run တလ တအခေါ လလ တိအပြမတလ တ ဖေလ တိငမကတတွေကလ တိ Include လလ ပြမပခေငမး Load

Page 7: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

လလ ပြမပခေငမး စတလ တ လလ ပြမငနမးကတတွေကလ တိ လလ ပြမကပြးတလ တ ဖေလ တိငမကတတွေကလ တိ စလ စညမးကပြးထားတလ တDirectory ပဖေစမပြါတယမ။

artisan Laravel ရ လတ Command Line Tool ပဖေစမပြါတယမ။ Project ကလ တိ Run ဖေလ လတိ ၊Database Migration ကတတွေ Run ဖေလ လတိနလတ Model ဖေလ တိငမကတတွေ၊ Controller ဖေလ တိငမကတတွေတညမကဆောကမဖေလ လတိအတတွေကမ အသသလ းပပြနလ တိငမပြါတယမ။

.env Environment Setting ကတတွေကလ တိ ဒပြီ ဖေလ တိငမထတမမှ ာ ကရးသားသတမမမှ တမ ကပြးရပြါတယမ။ဦပြမာ – Local မမှ ာ Develop လလ ပြမကနစဦမ သသလ းရမယမလ Database Username,Password ကဘော၊ Server မမှ ာ Distribute လလ ပြမလလ တိကမတလ တအခေါ သသလ းရမယမလDatabase Username, Password ကဘော စသပဖေငမလ Environment အလလ တိကမခေတတွေ ပခေားသတမမမှ တမလလ တိတလ တ Setting ကတတွေကလ တိ သတမမမှ တမကပြးနလ တိငမပခေငမး ပဖေစမပြါတယမ။

Laravel RouterApplication တစမခေလ ကလ တိ စတငမကတာလ မယမဆေလ တိရငမ ပြထမဆေသလ းလလ ပြမသငမလ တလ တ အလလ ပြမကကတာလ URI လမမးကကကာငမးကတတွေ သတမမမှ တမပခေငမး ပြတပဖေစမပြါတယမ။ ဒပြီလလ ပြမကဆောငမခေချကမကလ တိ Routing လလ လတိကခေါ်ပပြပြီး /app/Http/routes.php မမှ ာ Routing သတမမမှ တမခေချကမကတတွေကလ တိ ကရးသားသတမမမှ တမ ကပြးရပြါတယမ။ ကရးသားပြသလ ကကတာလ အခေလ လလ တိ ပဖေစမပြါတယမ။

Route::get('/user', function () {return 'Hello User';

});

/user URI နလတ Request ကလ တိ လကမခေသ ရရတိမှ ရငမ ကဆောငမရတွေကမရမယမလ Function ကလ တိ သတမမမှ တမကပြးထားပခေငမး ပဖေစမပြါတယမ။ ဒပြီကန ရာမမှ ာJavaScript Nameless Function လလ တိမချ တိိး Nameless Function တစမခေလ ကလ တိ အသသလ းပပြထားတာကလ တိ ကတတွေ လရမမှ ာ ပဖေစမပြါ တယမ။ NamelessFunction ဆေလ တိတာ PHP 5.1, 5.2 စတလ တ အရငမ PHP Version ကတတွေမမှ ာ မပြါဝငမကပြမယမလ ကနာငမပြလ တိငမး PHP Version ကတတွေမမှ ာ ပြါဝငမလာတလ တလလ ပြမကဆောငမခေချကမ ပဖေစမပြါတယမ။ နမသူ နာအရ /user URI နလတ Request ကလ တိ လကမခေသ ရရတိမှ ရငမ Hello User ဆေလ တိတလ တ Message ကလ တိResponse အပဖေစမ ပပြနမကပြးသတွေားမမှ ာ ပဖေစမပြါတယမ။

ဒပြီလလ တိ Function တစမခေလ သတမမမှ တမမယမလ အစား Controller နလတ Action ကလ တိလတ သတမမမှ တမကပြးနလ တိငမပြါတယမ။ ဦပြမာ –

Rout::get('/user', 'UserController@index');

အဓတိပြပ္ပါယမကကတာလ /user URI နလတ Request ကလ တိ လကမခေသ ရရတိမှ ရငမ UserController ရ လတ index Action ကလ တိ အလလ ပြမလလ ပြမကပြးပြါလလ လတိသတမမမှ တမလလ တိကမပခေငမးပဖေစမပြါတယမ။ ဒပြီကနရာမမှ ာ get() Function ကလ တိ အသသလ းပပြထားတလ တအတတွေကမ Request Method က GET ပဖေစမမမှအလလ ပြမလလ ပြမမမှ ာပြါ။ အကယမ၍ Request Method POST အတတွေကမ Route ကလ တိ သတမမမှ တမလလ တိရငမ ကတာလ get() Function အစားpost() Function ကလ တိ အစားထလ တိး အသသလ းပပြနလ တိငမပြါတယမ။ အလားတသူပြတ အပခေား Request Method ကတတွေပဖေစမတလ တ PUT နလတ DELETE တလ လတိအတတွေကမလညမး put() Function နလတ delete() Function တလ လတိကလ တိ အသသလ းပပြနလ တိငမပြါ တယမ။ Request Method ကလ တိမကကညမလ ပြတ အလလ ပြမလလ ပြမကစလလ တိရငမကတာလ all() Function ကလ တိ အသသလ းပပြနလ တိငမပြါတယမ။

Variable Parameter ကတတွေကလ တိလညမး Route URI အတတွေကမ သတမမမှ တမကပြးနလ တိငမပြါတယမ။ ဦပြမာ –

Route::post('/user/update/{id}', 'UserController@update');

နမသူနာအရ /user/update/123 ဆေလ တိတလ တ URI ကလ တိ လကမခေသ ရရတိမှ ရငမ {id} Parameter ရ လတတနမဖေလ တိ းက 123 ပဖေစမတလ တအတတွေကမ အလလ ပြမလလ ပြမတလ တအခေါ $id ဆေလ တိတလ တ Variable တစမခေလ ကလ တိ Laravel ကအသငမလ ကကကပငာကပြးထားမမှ ာ ပဖေစမပပြပြီး 123 ကလ တိ တနမဖေလ တိးအပဖေစမ ထညမလ သတွေငမးကပြးထားမမှ ာ ပဖေစမပြါတယမ။ 123 ကနရာမမှ ာ အပခေားမညမသညမလ တနမဖေလ တိးကလ တိမဆေလ တိ အစားထလ တိးအသသလ းပပြနလ တိငမပြါတယမ။

Page 8: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

Laravel Controllers and ViewsLaravel မမှ ာ Controller ဖေလ တိငမကတတွေကလ တိ /app/Http/Controllers/ Directory ထတမမှ ာ ကရးသားကပြးရပြါတယမ။Controller.php ဆေလ တိတလ တ Class တစမခေလ ဟာ မသူလကတညမးက ရတိမှ ကနမမှ ာပဖေစမပပြပြီး ကကျွနမကတာမတလ လတိ ပဖေညမလ စတွေကမကရးသားတလ တ Controller ကတတွေဟာ အလ တဒပြီ Class ကကန ဆေကမခေသ ကရးသားကပြးရမမှ ာပဖေစမပြါတယမ။ ဦပြမာ – index နလတ update ဆေလ တိတလ တ Action နမှ စမခေလ ပြါဝငမ တလ တUserController တစမခေလ ကလ တိ ကရးသားလလ တိတလ တဆေလ တိရငမ UserController.php လလ လတိ ဖေလ တိငမအမညမကလ တိကပြးရမမှ ာပဖေစမပပြပြီး ကရးသားရမယမလCode နမသူနာကကတာလ အခေလလလ တိ ပဖေစမမမှ ာပဖေစမပြါတယမ။

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class UserController extends Controller {

function index() {return 'I am Index';

}

function update($id) {return “I am updating $id”;

}}

namespace အကကကာငမးကလ တိ ဒပြီကနရာမမှ ာ အကချယမခေချ လတ ပပြပြီးကတာလ မရမှ ငမးကတာလ ပြါဘေသူ း။ လလ တိရငမးအကနနလတ နားလညမရမမှ ာကကတာလ namespaceကလ တိ အမချ တိိးတသူရာ Class ကတတွေကလ တိ စလ စညမးဖေလ လတိ သသလ းတယမလလ လတိ နားလညမရပြါမယမ။ Laravel Controller Class အားလသလ းဟာApp\Http\Controllers ဆေလ တိတလ တ namespace အတတွေငမးမမှ ာ ပြါဝငမရမမှ ာပဖေစမပြါတယမ။ ဒါကကကာငမလ နမသူနာ Code ရ လတ ထတိပြမဆေသလ းမမှ ာnamespace App\Http\Controllers လလ လတိ ကကကပငာထညမလ သတွေငမးကပြးထားပခေငမး ပဖေစမပြါတယမ။

ပပြပြီးတလ တအခေါ ပြငမမ Controller Class ကလ တိ use Keyword နလတ ခေချတိတမဆေကမထညမလ သတွေငမးထားပြါတယမ။ ပြငမမ Controller Classဟာလညမး App\Http\Controllers Namespace ကအာကမမမှ ာပြတပြါဝငမတလ တအတတွေကမ useApp\Http\Controllers\Controller လလ လတိ ရညမညညွှနမးခေချတိတမဆေကမထားပခေငမးပြတ ပဖေစမပြါတယမ။

ပပြပြီးတလ တအခေါ ကကျွနမကတာမတလ လတိရ လတ Controller ပဖေစမတလ တ UserController ကလ တိ ကကကပငာတလ တအခေါ extends Keyword နလတ ပြငမမController ကလ တိ Inherit လလ ပြမယသူကကကပငာထားတာကလ တိ ကတတွေ လရမမှ ာ ပဖေစမပြါတယမ။ ဒါဟာ Controller Class တစမခေလ ကရးသားဖေလ လတိ အတတွေကမ မပဖေစမမကန ပြါဝငမရမယမလ အကပခေခေသ Structure ပြတ ပဖေစမပြါတယမ။

UserController မမှ ာ index နလတ update ဆေလ တိတလ တ Action နမှ စမခေလ ပြါဝငမကစလလ တိတလ တအတတွေကမ index() နလတ update() ဆေလ တိတလ တFunction နမှ စမခေလ ကလ တိ ကကကပငာထားတာကလ တိလညမး ကတတွေ လရနလ တိငမပြါတယမ။ update() Function မမှ ာ $id Variable ကလ တိ အသသလ းပပြထားပပြပြီး အလ တဒပြီ $id Variable ထတမမှ ာ URI Route ရ လတ {id} Parameter ကနရာမမှ ာ ပြါဝငမလာတလ တတနမဖေလ တိ း အသငမလ ရတိမှ ကနမမှ ာပြတ ပဖေစမပြါတယမ။

လကမရတိမှ index နလတ update Action ကတတွေက ရလ တိ းရလ တိ း Text Message ကတတွေကလ တိ Response ပပြနမကပြးကနပခေငမး ပဖေစမပြါတယမ။ အလ တဒပြီလလ တိText Message ကတတွေကလ တိ Response မပပြနမပြတ HTML Template ကတတွေကလ တိ Response ပပြနမလလ တိရငမကတာလ View ကလ တိ အသသလ းပပြရမမှ ာ ပဖေစမပြါတယမ။

View Template ကတတွေကလ တိ Blade Template Engine အသသလ းပပြကရးသားပပြပြီး /resources/views/ Directory ကအာကမမမှ ာ သတိမမးကပြးရပြါတယမ။ Blade Template Engine ကလ တိ မသသလ းတကမရငမလညမး ရလ တိ းရလ တိ း HTML နလတ PHP ကလ တိပြတ အသသလ းပပြနလ တိငမပြါတယမ။ ဦပြမာ -/resources/views/ Directory ကအာကမမမှ ာ users ဆေလ တိတလ တ Directory တစမခေလ ကဆောကမပပြပြီး hello.blade.php ဆေလ တိတလ တTemplate တစမခေလ ကလ တိ အခေလ လလ တိ ကရးသားတညမကဆောကမထားနလ တိငမပြါတယမ။

Page 9: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

<!DOCTYPE html><html lang="en"><head>

<title>Laravel Example</title></head><body>

<h1>Index</h1><p>Hello World!</p>

</body></html>

ရလ တိ းရလ တိ း HTML Code ကတတွေသာ ပဖေစမတယမဆေလ တိတာကလ တိ ကတတွေ လနလ တိငမပြါတယမ။ အလ တဒပြီ Template ကလ တိ UserController ရ လတ index Action ကကနရယသူ ပပြပြီး Response ပပြနမလလ တိတလ တအခေါ အခေလ လလ တိ ကရးသားနလ တိငမပြါတယမ။

function index() {return view(“user/hello”);

}

view() Function ကလ တိ Response ပပြနမကပြးလလ တိကမပခေငမးပဖေစမပပြပြီး အသသလ းပပြရမယမလ Template အကနနလတ user Directory ထတကhello.blade.php ကလ တိ အသသလ းပပြပြါလလ လတိ ကပပြာလလ တိကမပခေငမး ပဖေစမပြါတယမ။ view() Function ထတမမှ ာ File Extension ပဖေစမတလ တblade.php ကလ တိ ထညမလ ကပြးစရာ မလလ တိပြါဘေသူ း။

View Template ထတမမှ ာ အသသလ းပပြရမယမလ Data ကတတွေကလ တိလညမး Template ကလ တိ view() Function နလတ ကခေါ်ယသူစဦမမမှ ာ ထညမလ သတွေငမး ကပြးနလ တိငမပြါကသးတယမ။ ဦပြမာ – index Action ကလ တိ အခေလ လလ တိ ပပြငမဆေငမကရးသားလလ တိကမတယမ ဆေလ တိပြါစလ လတိ။

function index() {return view(“user/hello”, array(

“name” => “John Doe”));

}

Array တစမခေလ ကလ တိ view() Function ရ လတ ဒလတတိယ Parameter အပဖေစမ ထညမလ သတွေငမးကပြးလလ တိကမပခေငမးပဖေစမပြါတယမ။ Array Index name ကလ တိTemplate ထတမမှ ာ $name ဆေလ တိတလ တ Variable အပဖေစမ အသငမလ သသလ းနလ တိငမကအာငမ Laravel က စပြီစဦမကပြးထားမမှ ာပဖေစမလလ လတိ Template ကလ တိ အခေလ လလ တိပပြငမဆေငမကရးသားနလ တိငမပြါတယမ။

<!DOCTYPE html><html lang="en"><head>

<title>Laravel Example</title></head><body>

<h1>Index</h1><p>Hello <?= $name ?>!</p>

</body></html>

$name Variable ကလ တိ PHP နလတ ရလ တိကမထလတမ အသသလ းပပြထားပခေငမးပြတ ပဖေစမပြါတယမ။

Page 10: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

Master Viewလကမကတတွေ လမမှ ာ View တလ တိငမးအတတွေကမ Template အပပြညမလ အစသလ လလ တိကမကရးကပြးကနရရငမ သဘောဝမကချပြါဘေသူ း။ မညမသညမလ App မဆေလ တိ MainContent ကသာ ကပပြာငမးလတကလလ ရတိမှ ပပြပြီး Menu, Logo, Title, Footer စတလ တ Component ကတတွေက View တစမခေလ နလတ တစမခေလ တသူညပြီကကကလလ ရတိမှပြါတယမ။ ဒပြီပပြဿနာကပပြလညမကစဖေလ လတိအတတွေကမ Master View ကလ တိ သသလ းကကကလလ ရတိမှ ပြါတယမ။

ပြထမဦပြီးဆေသလ းအကနနလတ Master View တစမခေလ ကလ တိ အခေလလလ တိတညမကဆောကမနလ တိငမပြါတယမ။ ဖေလ တိငမအမညမကလ တိ master.blade.php လလ လတိ ကပြးထားတယမဆေလ တိ ကကပြါစလ လတိ ။

<!DOCTYPE html><html lang="en"><head>

<meta charset="UTF-8"><title>Master View</title>

</head><body>

<h1>Hello, World!</h1><div class="container">

@yield("main")</div>

</body></html>

Class ကလ တိ container လလ လတိသတမမမှ တမထားတလ တ <div> အတတွေငမးမမှ ာ @yield(“main”) လလ လတိ ကရးသားထားတာကလ တိ သတတိပပြရမမှ ာပဖေစမပြါတယမ။ ဤကနရာတတွေငမ Main Section ကလ တိ ကဖောမပပြပြါ ဆေလ တိတလ တ အဓတိပြပ္ပါယမပြါ။ Master View ကလ တိ အခေလ လလ တိ သတမမမှ တမပပြပြီးပပြပြီဆေလ တိရငမ အပခေားView ကတတွေကလ တိ အခေလ လလ တိ သတမမမှ တမနလ တိငမပြါတယမ။ ဖေလ တိငမအမညမကလ တိ index.blade.php လလ လတိ ကပြးထားတယမ ဆေလ တိပြါစလ လတိ ။

@extends("master")

@section("main")<h2>Index</h2><p>Content</p>@stop

@extends(“master”) လလ လတိ ကကကပငာထားတလ တအတတွေကမ master.blade.php ဆေလ တိတလ တ Template ထတမမှ ာ ကဖောမပပြကပြးပြါဆေလ တိတလ တ

Page 11: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

အဓတိပြပ္ပါယမ ပဖေစမသတွေားပြါတယမ။ Master View ရ လတ ဖေလ တိငမအမညမကလ တိ app.blade.php လလ လတိ ကပြးထားမယမဆေလ တိရငမ @edtends(“app”)လလ လတိ ကရးသားကပြးရမမှ ာ ပဖေစမပြါတယမ။

ကဖောမပပြရမယမလ Content ကတတွေကလ တိကတာလ @section(“main”) နလတ @stop အကကားမမှ ာ ကရးသား ကပြးရမမှ ာပြတပဖေစမပြါတယမ။ MasterView မမှ ာ @yield(“main”) လလ လတိ သတမမမှ တမထားလလ လတိ ဒပြီကနရာမမှ ာလညမး @section(“main”) လလ လတိ သသလ းထားပခေငမးပဖေစမပြါတယမ။အပခေားအမညမနလတ သသလ းလလ တိကလညမး သသလ းနလ တိငမပြါတယမ။

ဒပြီလလ တိ Master View နလတ View ကရးသားထားပပြပြီးပပြပြီဆေလ တိရငမ Controller ထတမမှ ာ ပြသလ မမှ နမကရးရလ တိ းကရးစဦမအတလ တိငမး ဆေကမလကမကရးသား နလ တိငမပြါတယမ။

function index() {return view(“index”);

}

ဒပြီလလ တိကရးသားထားတလ တအတတွေကမ Response အကနနလတ Index View ကလ တိ ပပြနမကပြးဖေလ လတိ ကကတိးစားတလ တအခေါ Index View ဟာ Master View ကလ တိExtend လလ ပြမထားကကကာငမး Laravel နလတ Blade Template Engine တလ လတိကသတိပပြပြီး Master View နလတ Index View တလ လတိကလ တိ ကပြါငမးစပြမပပြပြီးမမှResponse ပပြနမကပြးသတွေားမမှ ာပြတ ပဖေစမပြါတယမ။

Redirectလလ တိအပြမတလ တလလ ပြမငနမးကတတွေကလ တိ ကဆောငမရတွေကမပပြပြီးတလ တအခေါ View တစမခေလ ကလ တိ Response မပပြနမပြတ အပခေားလလ ပြမကဆောငမခေချကမ (သလ လတိမဟလတမ) Route ထသRedirect လလ ပြမတလ တအလလ ပြမဟာလညမး အကပခေခေသလလ တိအပြမခေချကမပဖေစမပြါတယမ။ ဒပြီလလ ပြမကဆောငမခေချကမ ရရတိမှ ဖေလ လတိအတတွေကမ Laravel မမှ ာ redirect()Function ကလ တိ အသသလ းပပြနလ တိငမပြါတယမ။ Redirect လလ ပြမတလ တအခေါ Route တစမခေလ ကလ တိ ညညွှနမးနလ တိငမသလလ တိ၊ Controller တစမခေလ ရ လတ Action ကလ တိလညမးညညွှနမးနလ တိငမပြါတယမ။

Route တစမခေလ ကလ တိ အခေလလလ တိ Redirect လလ ပြမနလ တိငမပြါတယမ။

return redirect('user/list');

နမသူနာအရ user/list ဆေလ တိတလ တ Route ကလ တိ Redirect ပပြလလ ပြမကပြးသတွေားမမှ ာ ပဖေစမပြါတယမ။ Action တစမခေလ ကလ တိ Redirect လလ ပြမလလ တိရငမကတာလအခေလ လလ တိ ပပြလလ ပြမနလ တိငမပြါတယမ။

return redirect('UserController@new');

နမသူနာအရ UserController ရ လတ new Action ကလ တိ Redirect ပပြလလ ပြမကပြးသတွေားမမှ ာပြတ ပဖေစမပြါတယမ။ အလ တဒပြီလလ တိ Redirect ပပြလလ ပြမတလ တအခေါ ErrorMessage ကတတွေ Information Message ကတတွေ တတတွေဖေကမထညမလ သတွေငမး ကပြးနလ တိငမပြါတယမ။ ဦပြမာ –

return redirect('user/profile')->with('info', 'Login Successful');

with() Function ကလ တိ သသလ းပပြပြီး ကပြးပြလ တိထားပခေငမးပဖေစမပြါတယမ။ Message အမညမကလ တိ info လလ လတိ ကပြးထားပပြပြီး၊ Message Contentအကနနလတ Login Successful လလ လတိ သတမမမှ တမကပြးထားပခေငမး ပဖေစမပြါတယမ။ ဒပြီ Message ကလ တိ View Template ထတမမှ ာ ကဖောမပပြလလ တိရငမကတာလအခေလ လလ တိ ကဖောမပပြနလ တိငမပြါတယမ။

<? if( session('info') ): ?><div class="info">

<?= session('info') ?></div><? endif; ?>

Page 12: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

with() Function က Message ကလ တိ SESSION ထတမမှ ာ သတိမမးပပြပြီး ထညမလ ကပြးလလ တိကမတာပဖေစမလလ လတိ ၊ အလ တဒပြီ Message ကလ တိ ပပြနမလညမ ရယသူလလ တိတလ တအခေါ session() Function ကကနတစမဆေငမလ ရယသူရပခေငမး ပဖေစမပြါတယမ။ နမသူ နာအရ info ဆေလ တိတလ တ Message ရတိမှ မရတိမှ စစမပပြပြီး ရတိမှ ရငမClass မမှ ာ info လလ လတိ သတမမမှ တမထားတလ တ <div> တစမခေလ နလတ ကဖောမပပြထားကစပခေငမးပြတ ပဖေစမပြါတယမ။ ဒပြီနညမးနလတ လလ တိအပြမတလ တ မညမသညမလMessage ကလ တိ မဆေလ တိ Redirect နလတအတသူ တတတွေဖေကမ ကပြးပြလ လတိနလ တိငမပခေငမးပြတ ပဖေစမပြါတယမ။

ValidationUser Input Data ကတတွေ မမှ နမကနမမနှုရတိမှ မရတိမှ စပြီစစမတလ တ Validation လလ ပြမကဆောငမခေချကမဟာလညမး မညမသညမလ App မဆေလ တိလလ တိအပြမတလ တ အကပခေခေသလလ ပြမကဆောငမခေချကမ ပဖေစမပြါတယမ။ Laravel မမှ ာ Validation Class တစမခေလ တစမခေါတညမး ပြါဝငမပပြပြီး အလ တဒပြီ Class ရ လတ အကသူ အညပြီနလတValidation လလ ပြမငနမးကလ တိ ကဆောငမရတွေကမနလ တိငမပြါတယမ။ Validation Class ကလ တိ စတငမအသသလ းပပြနလ တိငမဖေလ လတိအတတွေကမ use Keyword နလတ ကကကပငာကပြးဖေလ လတိလလ တိနလ တိငမပြါတယမ။

use Validation;

Validation စစမတယမဆေလ တိတာ အကပခေခေသအားပဖေငမလ User Input Data ကလ တိ စစမတာပဖေစမတလ တအတတွေကမ User Input Data ကလ တိ လကမခေသ နလ တိငမကပြးနလ တိငမတလ တ Request Class ကလ တိလညမး တတတွေဖေကမအသသလ းပပြဖေလ လတိ လလ တိနလ တိငမပြါတယမ။

use Request;

Request Class ရ လတ all() Function ကလ တိ အသသလ းပပြပပြပြီး Request နလတအတသူပြါဝငမလာတလ တ Input Data ကတတွေကလ တိ ရယသူနလ တိငမပြါတယမ။ ရရတိမှ လာတလ တ Input Data ကတတွေမမှ ာ –

1. name မပဖေစမမကနပြါဝငမရမယမ2. email မပဖေစမမကနပြါဝငမပပြပြီး Email Format မမှ နမရမယမ3. password မပဖေစမမကနပြါဝငမပပြပြီး အနညမးဆေသလ း (၆) လသလ းရတိမှ ရမယမ4. password_again ပြါဝငမပပြပြီး password နလတ တသူညပြီရမယမ

– လလ လတိ Validation စစမခေချငမရငမ အခေလ လလ တိ စစမနလ တိငမပြါတယမ။

$input = Request::all();

$validator = Validator::make($input, array("name" => "required","email" => "required|email","password" => "required|min:6","password_again" => "same:password"

));

ပြထမဦပြီးဆေသလ း Request::all() နလတ Input Data အားလသလ းကလ တိ ရယသူပြါတယမ။ ပပြပြီးတလ တအခေါ Validator::make() Function ရ လတပြထမ Parameter အပဖေစမ Input Data ကလ တိကပြးလလ တိကမပပြပြီး ဒလ တတိယ Parameter အပဖေစမ Validation Rule ကတတွေကလ တိ Array အကနနလတကပြးလလ တိကမပခေငမး ပဖေစမပြါတယမ။

name အတတွေကမ required သတမမမှ တမထားပပြပြီး email အတတွေကမ required နလတ email လလ လတိ သတမမမှ တမထားပြါတယမ။password ကလ တိ min:6 ပဖေစမရမယမလလ လတိ သတမမမှ တမထားပပြပြီး password_again ကလ တိကတာလ password နလတ တသူညပြီရမယမလလ လတိ sameကလ တိ သသလ းပပြပြီး သတမမမှ တမထားပခေငမးပဖေစမပြါတယမ။ ဒပြီလလ တိစပြီစစမလလ တိကမတလ တ ရလဒမ Pass ပဖေစမမပဖေစမ သတိလလ တိရငမကတာလ passes() Function ကလ တိအသသလ းပပြ စစမကဆေးနလ တိငမပြါတယမ။ ဦပြမာ –

Page 13: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

if( $validator->passes() ) {redirect ('user/login')->with('info', 'Success');

} else {redirect ('user/register')->withErrors( $validator );

}

ဒပြီကနရာမမှ ာ သတတိပပြရမမှ ာက Validation Passes မပဖေစမလလ လတိ Redirect လလ ပြမတလ တအခေါ Validation Error Message ကတတွေကလ တိwithErrors() Function နလတအတသူတတတွေဖေကမကပြးထားပခေငမးပြတ ပဖေစမပြါတယမ။ ဒပြီလလ တိကပြးပြလ လတိလလ တိကမတလ တ Validation Error ကတတွေဟာ ViewTemplate ထတမမှ ာ $errors ဆေလ တိတလ တ Object အကနနလတ တညမရတိမှ ကနမမှ ာပဖေစမပြါတယမ။ ဒါကကကာငမလ View Template ထတ Validation ErrorMessage ကတတွေကလ တိ ကဖောမပပြလလ တိရငမ အခေလ လလ တိ ကဖောမပပြနလ တိငမပြါတယမ။

<? if( count($errors) ): ?><ul class='errors'>

<? foreach( $errors->all() as $err ): ?><li><?= $err ?></li>

<? endforeach; ?></ul>

<? endif; ?>

ပြထမဦပြီးဆေသလ း $errors မမှ ာ Message ရတိမှ မရတိမှ count() Function နလတ စပြီစစမပပြပြီး ရတိမှ တယမဆေလ တိရငမ <ul> Element တစမခေလ နလတ ErrorMessage ကတတွေကလ တိ Loop လလ ပြမပပြပြီး ကဖောမပပြထားပခေငမးပြတ ပဖေစမပြါတယမ။ $errors Object မမှ ာပြါဝငမတလ တ Error Message အားလသလ းကလ တိArray အကနနလတ ရရတိမှ ဖေလ လတိအတတွေကမ all() Function ကလ တိ အသသလ းပပြရပပြပြီး၊ ရရတိမှ လာတလ တ Array ကလ တိ foreach နလတ Loop လလ ပြမထားပခေငမး ပဖေစမပြါတယမ။

Validation စစမရာမမှ ာ အသသလ းပပြနလ တိငမတလ တ required, email, min, same စတလ တ Option အပပြညမလ အစသလ ကလ တိကတာလ ကအာကမပြါလတိပြမစာမမှ ာ ဆေကမလကမကလလလာနလ တိငမပြါတယမ။

http://laravel.com/docs/5.1/validation

AuthenticationLaravel မမှ ာ User Authentication လလ ပြမကဆောငမခေချကမ တစမခေါတညမး ပြါဝငမလာပပြပြီးပဖေစမပြါတယမ။ စတငမအသသလ းပပြနလ တိငမဖေလ လတိအတတွေကမ useKeyword နလတ Authenticate Class ကလ တိ အသသလ းပပြမယမလ အကကကာငမး ကကကပငာကပြးဖေလ လတိ လလ တိအပြမနလ တိငမပြါတယမ။

use Auth;

Laravel ရ လတ Authentication လလ ပြမကဆောငမခေချကမကလ တိ အသသလ းပပြနလ တိငမဖေလ လတိအတတွေကမ လလ တိအပြမခေချကမ (၃) ခေချကမ ရတိမှ ပြါတယမ။

ပြထမဦပြီးဆေသလ းလလ တိအပြမခေချကမကကတာလ users ဆေလ တိတလ တ အမညမနလတ Table တစမခေလ ရတိမှ ဖေလ လတိပြတ ပဖေစမပြါတယမ။ Laravel က users Table မမှ ာသတွေားကရာကမစစမကဆေးပခေငမးအားပဖေငမလ User တစမကယာကမကလ တိ Authenticate ပပြလလ ပြမကပြးသငမလ မသငမလ ဆေသလ းပဖေတမမမှ ာပဖေစမပြါတယမ။ usersTable ရ လတ ဖေတတွေ လစညမးပြသလ ကလ တိ မတိမတိ App ရ လတ လလ တိအပြမခေချကမအတလ တိငမး တညမကဆောကမနလ တိငမပြါတယမ။ ဒါကပြမယမလ password ဆေလ တိတလ တ Field တစမခေလ နလတremember_token ဆေလ တိတလ တ Field တလ လတိကတာလ မပဖေစမမကန ပြါဝငမသငမလ ပြါတယမ။

ဒလတတိယလလ တိအပြမခေချကမကကတာလ /config/auth.php မမှ ာ Authentication Driver သတမမမှ တမကပြးရမမှ ာ ပဖေစမပြါတယမ။/config/auth.php ကလ တိ ဖေတွေငမလ ကကညမလ လလ တိကမရငမ Default အကနနလတ အခေလ လလ တိ Setting တစမခေလ ပြါဝငမနလ တိငမပြါတယမ။

'driver' => 'eloquent'

Page 14: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

Eloquent ORM ကလ တိ မသသလ းပြတ Authentication လလ ပြမငနမးကလ တိ ကဆောငမရတွေကမလလ တိရငမ အခေလ လလ တိ ပပြငမဆေငမကပြးရမမှ ာ ပဖေစမပြါတယမ။

'driver' => 'database'

တတတိယတစမခေချကမကကတာလ Login Form မမှ ာ CSRF Token တစမခေလ ပြါဝငမရမမှ ာပဖေစမပြါတယမ။ CSRF အကကကာငမးကလ တိ Professional WebDeveloper – အခနနး (၁၉) Web Application Security မမှ ာ ကလလလာနလ တိငမပြါတယမ။ Login Form ရ လတ ဖေတတွေစညမးပြသလ ဟာ အခေလ လလ တိ ပဖေစမသငမလပြါတယမ။

<form method="post" action="<?= URL::to('user/login') ?>"><input type="hidden" name="_token" value="<?= csrf_token() ?>">

<input type="email" name="email" required placeholder="Your Email"><input type="password" name="password" required placeholder="Password">

<input type="submit" value="Login"></form>

Form ရ လတ action Attribute အတတွေကမ လတိပြမစာသတမမမှ တမတလ တအခေါ Route တစမခေလ ကလ တိ ညညွှနမးခေချငမတလ တအတတွေကမ URL::to() ကလ တိ အသသလ းပပြထားတာကလ တိ သတတိပပြသငမလ ပြါတယမ။ မပဖေစမမကန ပြါဝငမရမယမလ အခေချကမကကတာလ name ကလ တိ _token လလ လတိ သတမမမှ တမထားတလ တ Hidden Inputတစမခေလ ပြတပဖေစမပြါတယမ။ အလ တဒပြီ Hidden Input ရ လတ value အကနနလတ csrf_token() Function ကကပြးတလ တ တနမးဖေလ တိ းကလ တိ သတမမမှ တမကပြးရမမှ ာပြတပဖေစမပြါတယမ။

ဒါဟာ Cross-Site Request Forgery လလ လတိကခေါ်တလ တ လသလ ပခေသ ကရးပပြဿနာကလ တိ ကာကတွောကပြးတလ တ နညမးစနစမပဖေစမပပြပြီး Laravel မမှ ာ Login Formသာမက Form အားလသလ း ဒပြီလလ ပြမကဆောငမခေချကမကလ တိ မပဖေစမမကန အသသလ းပပြရမမှ ာ ပဖေစမပြါတယမ။

Login Form ကကန ကပြးပြလ လတိလာတလ တ တနမးဖေလ တိ းကလ တိ အသသလ းပပြပပြပြီး Authenticate လလ ပြမတလ တလလ ပြမငနမးကလ တိ အခေလ လလ တိ ကဆောငမရတွေကမနလ တိငမပြါတယမ။

$input = Request::all();

if(Auth::attempt( array('email' => $input['email'], 'password' => $input['password']

))) {return redirect('user/profile');

} else {return redirect('user/login')->withErrors(

array('Login failed! Try again.'));

}

ပြထမဦပြီးဆေသလ းအကနနလတ Login Form က ကပြးပြလ လတိလာတလ တ Data ကလ တိ Request::all() နလတရယသူပြါတယမ။ ပပြပြီးတလ တအခေါAuth::attempt() Function ကလ တိသသလ းပပြပြီး Login Form ကကပြးပြလ လတိလာတလ တ Email နလတ Password ဟာ users Table ထတမမှ ာသတိမမးဆေညမးထားတလ တ email, password နလတ ကလ တိကမညပြီပခေငမးရတိမှ မရတိမှ စပြီစစမထားပခေငမးပဖေစမပြါတယမ။ ကလ တိကမညပြီတယမဆေလ တိရငမ Login ကအာငမပမငမမမှ ာပဖေစမပြါတယမ။ Login ကအာငမပမငမပပြပြီး Authenticate ပဖေစမကနပခေငမးရတိမှ မရတိမှ ကလ တိ Auth::check() Function နလတ စပြီစစမနလ တိငမပြါတယမ။

if( !Auth::check() ) {return redirect('user/login')->with('info', 'Please login first!');

}

နမသူနာအရ Authenticate ပဖေစမမကနရငမ user/login ကလ တိ Redirect လလ ပြမကပြးသတွေားမမှ ာ ပဖေစမပြါတယမ။ Authenticate ပဖေစမထားတလ တUser ရ လတ အခေချကမအလကမကတတွေကလ တိ လလ တိခေချငမရငမကတာလ Auth::user() ကလ တိ အသသလ းပပြ ရယသူနလ တိငမပြါတယမ။

Page 15: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

$user = Auth::user();

Authenticate ပဖေစမထားတလ တ User ကလ တိ Logout ပပြလလ ပြမလလ တိရငမကတာလ Auth::logout() ကလ တိ အသသလ းပပြနလ တိငမပြါတယမ။

Authentication နလတအတသူ တတတွေဖေကမမမှ တမသားရမမှ ာကကတာလ Password Hash ပဖေစမပြါတယမ။ Password ကတတွေကလ တိ users Table ထတမမှ ာသတိမမးတလ တအခေါ Plain Text အကနနလတ မသတိမမးသငမလ ပြတ Hash ပပြလလ ပြမပပြပြီးမမှ သတိမမးသငမလ ပြါတယမ။ အလ တဒပြီလလ လတိ Hash ပပြလလ ပြမနလ တိငမဖေလ လတိ အတတွေကမ Laravel ရ လတHash Class ကလ တိ အသသလ းပပြနလ တိငမပြါတယမ။

use Hash;

Hash::make() Function ကလ တိ Password ကတတွေ Hash ပပြလလ ပြမဖေလ လတိ သသလ းနလ တိငမပြါတယမ။

$password = 'mypassword';$hashed_password = Hash::make($password);

Hash::make() က ပပြနမကပြးတလ တ Hash လလ ပြမပပြပြီးသား Password ကလ တိသာ users Table ထတမမှ ာ သတိမမးဆေညမးသငမလ ပြါတယမ။Auth::attempt() Function နလတ Login ဝငမဖေလ လတိ ကကတိးစားတလ တအခေါမမှ ာလညမး Laravel က User ကပြးလလ တိကမတလ တ Password ကလ တိ Hashလလ ပြမပပြပြီးမမှ သာ users Table ထတက Password Hash နလတ တလ တိကမဆေလ တိငမ စစမကဆေးမမှ ာပြတ ပဖေစမပြါတယမ။ Password Hash ရ လတ လသလ ပခေသ ကရးမမှ ာအကရးပြါပြသလ ကလ တိ Professional Web Developer – အခနနး (၁၉) Web Application Security မမှ ာ ဆေကမလကမ ကလလလာနလ တိငမပြါတယမ။

DatabaseLaravel မမှ ာ Database နလတပြကမသကမတလ တ လလ ပြမငနမးကတတွေအတတွေကမ Eloquent လလ လတိကခေါ်တလ တ ORM နညမးပြညာတစမမချ တိိး ပြါဝငမပြါတယမ။ အလ တဒပြီနညမးပြညာကလ တိ ဒပြီကနရာမမှ ာ ထညမလ သတွေငမးမကဖောမပပြကတာလ ပြတ၊ ကရ လမှ ပြလ တိငမးအခေနမးကတတွေမမှ ာ ကလလလာခေလ တပပြပြီးပဖေစမတလ တ Database Query ကတတွေကလ တိသာ ဆေကမလကမအသသလ းပပြသတွေားမမှ ာ ပဖေစမပြါတယမ။ Laravel မမှ ာ Database နလတပြကမသကမတလ တ လလ ပြမငနမးကတတွေအတတွေကမ DB ဆေလ တိတလ တ Class တစမခေလ ဟာ တစမခေါတညမးပြါဝငမလာပပြပြီးပဖေစမပြါတယမ။

use DB;

class User { static function create() { $name = 'John Doe'; $email = '[email protected]'; $result = DB::insert("INSERT INTO users (name, email)

VALUES ('$name', '$email'));

return $result; }}

နမသူနာကလ တိကလလ လာကကညမလ ရငမ DB Class ကလ တိ အသသလ းပပြမယမလ အကကကာငမး use Keyword နလတ ကကကပငာထားတာကလ တိ ကတတွေ လရမမှ ာပဖေစမ ပြါတယမ။ ပပြပြီးတလ တအခေါ User အမညမနလတ Class တစမခေလ တညမကဆောကမပပြပြီး create() Function ကလ တိ ထညမလ သတွေငမးကရးသားထားပြါတယမ။ create()Function အတတွေငမးမမှ ာ DB::insert() ကလ တိ သသလ းပပြပြီး INSERT Query တစမခေလ ကလ တိ Run ထားပခေငမးပဖေစမပြါတယမ။

ဒပြီကနရာမမှ ာ သတတိပပြရမမှ ာက၊ create() Function ကလ တိ static Function အပဖေစမ ကကကပငာပြတပဖေစမပြါတယမ။ ဒါကကကာငမလ create()Function ကလ တိ အသသလ းပပြလလ တိတလ တအခေါ Object ကတတွေတညမကဆောကမဖေလ လတိမလလ တိပြတ Class Name ပဖေစမတလ တ User ကကန အခေလလလ တိ တလ တိကမရလ တိကမအသသလ းပပြနလ တိငမမမှ ာ ပဖေစမပြါတယမ။

User::create();

Page 16: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

Query ကတတွေကရးတလ တအခေါ ပြလ တိ ပပြပြီးစနစမကချတလ တ ကရးနညမးက အခေလ လလ တိပဖေစမမမှ ာပြါ။

static function create() { $name = 'John Doe'; $email = '[email protected]'; $result = DB::insert("INSERT INTO users (name, email) VALUES (?, ?), array($name, $email) );

return $result;}

Query Statement ထတမမှ ာ Data Value ကတတွေပဖေစမတလ တ $name နလတ $email ကလ တိ ထညမလ မကရးပြတ DB::insert() Function ရ လတဒလတတိယ Parameter အပဖေစမ ထညမလ သတွေငမးကပြးထားပခေငမး ပဖေစမပြါတယမ။ ဒပြီလလ တိ Query Statement နလတ Data ကလ တိ ခေတတွေ ပခေားကရးသား ထားပခေငမးဟာ လသလ ပခေသ ကရးအတတွေကမ ပြလ တိကကာငမးတလ တ နညမးလမမးပဖေစမပြါတယမ။ ဒပြီသကဘောသဘောဝကလ တိ Professional Web Developer – အခနနး (၁၉)Web Application Security မမှ ာ ဆေကမလကမကလလလာနလ တိငမပြါတယမ။ အမမှ နမကတာလ Laravel ကလညမး Database လလ ပြမငနမးကတတွေအတတွေကမPDO ကလ တိ အသသလ းပပြထားပခေငမးပဖေစမ ပြါတယမ။

INSERT Query အတတွေကမ DB::insert() ကလ တိ အသသလ းပပြသလလ တိ SELECT Query အတတွေကမ DB::select() ကလ တိ အသသလ းပပြနလ တိငမပြါတယမ။

$result = DB::select('SELECT * FROM users');

DB::select() က ရရတိမှ လာတလ တ ရလဒမကလ တိ Array တစမခေလ အကနနလတ ပပြနမကပြးမမှ ာပဖေစမပြါတယမ။ UPDATE Query အတတွေကမDB:update() ကလ တိ သသလ းနလ တိငမပပြပြီး DELETE Query အတတွေကမ DB::delete() တလ လတိကလ တိ အသသလ းပပြနလ တိငမပြါတယမ။ ဒပြီ Function ကတတွေကကတာလ UPDATE နလတ DELETE Query ကတတွေ Run လလ တိကမတလ တအတတွေကမ သကမကရာကမသတွေားတလ တ Record အကရအတတွေကမကလ တိ ပပြနမကပြးမမှ ာပဖေစမပြါတယမ။

ဒပြီလလ တိ Database နလတဆေကမသတွေယမအလလ ပြမလလ ပြမတလ တ Class ကလ တိ Model အပဖေစမ အလလ ပြမလလ ပြမကစလလ တိရငမ /app/ Directory ကအာကမမမှ ာ ကရးသားသတိမမးဆေညမး ကပြးရမမှ ာပဖေစမပပြပြီး App\Models Namespace ထတမမှ ာလညမး ထညမလ သတွေငမးကပြးရမမှ ာပဖေစမပြါတယမ။ Code ဖေလ တိငမရ လတ အကပြါ်ဆေသလ းမမှ ာအခေလ လလ တိထညမလ သတွေငမးကပြးပခေငမးအားပဖေငမလ Class ကလ တိ Model Namespace မမှ ာ ထညမလ သတွေငမးနလ တိငမပြါတယမ။

namespace App\Models;

User Registration System Exampleဆေကမလကမပပြပြီး လကမကတတွေ လနမသူ နာအကနနလတ စမမးသပြမနလ တိငမကစဖေလ လတိအတတွေကမ User Registration System တစမခေလ ကရးသားပြသလ ကလ တိကဖောမပပြ ကပြးသတွေားမမှ ာပဖေစမပြါတယမ။ Code နမသူနာကလ တိ အဓတိကကဖောမပပြကတာလ မမှ ာပဖေစမပပြပြီး Code ရ လတ အလလ ပြမလလ ပြမပြသလ အဓတိပြပ္ပါယမကလ တိကတာလ ကရ လမှ ပြလ တိငမးမမှ ာ ကဖောမပပြခေလ တပပြပြီးပဖေစမတလ တအခေချကမကတတွေကပြါ်အကပခေခေသ ပပြပြီး ကလ တိယမတလ တိငမနားလညမကအာငမ ဖေတမယသူရမမှ ာ ပဖေစမပြါတယမ။

ပြထမဦပြီးဆေသလ းအကနနလတ လလ တိအပြမတလ တ M-V-C ဖေလ တိငမကတတွေ တညမကဆောကမရပြါမယမ။ ကအာကမပြါ Directory Structure ကလ တိ ကလလလာ ကကညမလ ပြါ။

larapack├── app│ ├── … │ ├── Http│ │ ├── Controllers│ │ │ ├── … │ │ │ └── UserController.php (new)│ │ ├── … │ │ └── routes.php

Page 17: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

│ ├── Models (new)│ │ └── User.php (new)│ └── … ├── config│ ├── auth.php│ ├── …│ └── database.php├── … ├── public│ ├── css│ │ └── app.css│ ├── … │ └── index.php├── resources│ ├── … │ └── views│ ├── … │ ├── template.blade.php (new)│ └── user (new)│ ├── login.blade.php (new)│ ├── profile.blade.php (new)│ └── register.blade.php (new)└── …

1. /app/Http/Controllers/ ထတမမှ ာ UserController.php ကလ တိ တညမကဆောကမကပြးရပြါမယမ။2. /app/ ထတမမှ ာ Models အမညမနလတ Directory တစမခေလ တညမကဆောကမကပြးရပြါမယမ။3. /app/Models/ ထတမမှ ာ User.php ကလ တိ တညမကဆောကမကပြးရပြါမယမ။4. /resources/views/ ထတမမှ ာ template.blade.php ဆေလ တိတလ တ Master View ကလ တိ တညမကဆောကမကပြးရပြါမယမ။5. /resources/views/ ထတမမှ ာ user ဆေလ တိတလ တ Directory တစမခေလ တညမကဆောကမကပြးရပြါမယမ။6. /resources/views/ ထတမမှ ာ ကအာကမပြါ View ဖေလ တိငမကတတွေကလ တိ တညမကဆောကမရပြါမယမ။

◦ login.blade.php◦ profile.blade.php◦ register.blade.php

လလ တိအပြမတလ တ ဖေလ တိငမကတတွေ တညမကဆောကမပပြပြီးရငမ /app/Http/routes.php မမှ ာ ရတိမှ ကနတလ တ Code ကလ တိ ကအာကမပြါ Code နလတ အစားထလ တိးရပြါမယမ။

<?php

Route::get('/', 'UserController@index');Route::get('/user/login', 'UserController@index');Route::post('/user/login', 'UserController@login');

Route::get('/user/register', 'UserController@register');Route::post('/user/register', 'UserController@create');

Route::get('/user/profile', 'UserController@profile');Route::post('/user/profile', 'UserController@update');

Route::get('/user/logout', 'UserController@logout');

Route::get('/user/delete/{id}', 'UserController@delete');

• ကပြးထားတလ တ Code အရ Root URI အတတွေကမ GET Request တစမခေလ လကမခေသ ရရတိမှ ရငမ UserController ရ လတ index Actionကလ တိ အလလ ပြမလလ ပြမမမှ ာ ပဖေစမပြါတယမ၊

• /user/login URI ကလ တိ GET Request တစမခေလ လကမခေသ ရရတိမှ ရငမလညမး UserController ရ လတ index Action ကလ တိပြတ အလလ ပြမလလ ပြမ မမှ ာ ပဖေစမပြါတယမ။

• /user/login URL ကလ တိပြတ POST Request တစမခေလ လကမခေသ ရရတိမှ ရငမကတာလ UserController ရ လတ login Action ကလ တိအလလ ပြမလလ ပြမကပြးမမှ ာ ပဖေစမပြါတယမ။

Page 18: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

ကချနမ Route ကတတွေကလ တိကတာလ ကလ တိယမတလ တိငမ ဆေကမလကမကလလလာကကညမလ လလ တိကမပြါ။ ဆေကမလကမပပြပြီး /app/Models/user.php ထတမမှ ာကအာကမပြါ Code ကလ တိ ကရးသားကပြးပြါ။

<?php

namespace App\Models;

use DB;use Hash;

class User {

static function insert($input) {$data = array(

$input['name'],$input['email'],Hash::make($input['password'])

);

$result = DB::insert("INSERT INTO users (name, email, password

) VALUES (?, ?, ?)", $data);

return $result;}

static function update($input) {if($input['password']) {

$data = array($input['name'],$input['email'],Hash::make($input['password']),$input['phone'],$input['address']

);

$result = DB::update("UPDATE users SET name = ?, email = ?, password = ?, phone = ?, address = ?", $data);

} else {$data = array(

$input['name'],$input['email'],$input['phone'],$input['address']

);

$result = DB::update("UPDATE users SET name = ?, email = ?, phone = ?, address = ?", $data);

}

return $result;}

static function delete($user_id) {$result = DB::delete("DELETE FROM users WHERE id = ?",

array($user_id));

return $result;}

}

ဒပြီဖေလ တိငမမမှ ာပြါဝငမတလ တ User Class ကလ တိ Model Class ပဖေစမကစဖေလ လတိအတတွေကမ App\Models Namespace မမှ ာ ထညမလ သတွေငမးထားပြါတယမ။ ပပြပြီးတလ တအခေါ Class ထတမမှ ာ insert(), update() နလတ delete() Function (၃) ခေလ ကလ တိ ကရးသားထားပြါတယမ။

Page 19: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

insert() Function က ကပြးလာတလ တ Input Data ကလ တိ users Table ထတမမှ ာ ထညမလ ကပြးပြါတယမ။ password ကလ တိ Hash လလ ပြမပပြပြီးမမှ ာထညမလ သတွေငမးထားတာကလ တိ သတတိပပြပြါ။ update() Function ကကတာလ ကပြးလာတလ တ Data ကလ တိ users Table မမှ ာ Update လလ ပြမကပြးပြါတယမ။ Input Data မမှ ာ password ပြါ မပြါ စပြီစစမပပြပြီး ပြါရငမ password ကလ တိ ထညမလ ပပြပြီး Update လလ ပြမကပြမယမလ မပြါရငမကတာလpassword ကလ တိ ခေချနမပပြပြီး Update လလ ပြမထားပခေငမးပဖေစမပြါတယမ။ delete() Function ကကတာလ ကပြးလာတလ တ User ID နလတ ကလ တိကမညပြီတလ တRecord ကလ တိ users Table ထတကကန ပြယမဖေချကမတလ တအလလ ပြမကလ တိ လလ ပြမထားပြါတယမ။ Model တစမခေလ ရ လတ တာဝနမပဖေစမတလ တ Data ကတတွေ Create,Read, Update, Delete လလ ပြမတလ တ လလ ပြမငနမးကတတွေကလ တိ ကရးသားသတမမမှ တမထားပခေငမးပဖေစမပြါတယမ။

ဆေကမလကမပပြပြီး /app/Http/Controllers/UserController.php မမှ ာ ကအာကမပြါ Code ကလ တိ ကရးသားကပြးပြါ။

<?php namespace App\Http\Controllers;

use App\Http\Requests;use App\Http\Controllers\Controller;

use Request;use Validator;use Auth;

use App\Models\User;

class UserController extends Controller {

function index() {if(Auth::check())

return redirect("user/profile");

return view("user/login");}

function login() {$input = Request::all();

if(Auth::attempt(['email' => $input['email'], 'password' => $input['password']

])) {return redirect('user/profile');

} else {return redirect('user/login')

->withErrors(array('Login failed! Try again.'));}

}

function register() {if(Auth::check())

return redirect("user/profile");

return view("user/register");}

function create() {$input = Request::all();

$validator = Validator::make($input, array("name" => "required","email" => "required|email|unique:users","password" => "required|min:6","password_again" => "same:password"

));

if($validator->passes()) {User::insert($input);return redirect('user/login')->with('info', 'Register success!');

} else {

Page 20: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

return redirect('user/register')->withErrors($validator);}

}

function profile() {if(!Auth::check())

return redirect("user/login");

$user = Auth::user();return view('user/profile', array(

'id' => $user->id,'name' => $user->name,'email' => $user->email,'address' => $user->address,'phone' => $user->phone

));}

function update() {$input = Request::all();User::update($input);

return redirect("user/profile") ->with("info", "Profile Updated!");

}

function logout() {Auth::logout();return redirect('user/login');

}

function delete($user_id) {Auth::logout();User::delete($user_id);

return redirect('user/register');}

}

ကရးသားထားတလ တ Class ဟာ Controller Class ပဖေစမကစဖေလ လတိအတတွေကမ App\Http\Controllers Namespace ထတကလ တိ ထညမလ သတွေငမးထားပြါတယမ။ ပပြပြီးတလ တအခေါ User Request ကတတွေကလ တိ လကမခေသ နလ တိငမဖေလ လတိအတတွေကမ App\Http\Requests နလတ ပြငမမ Controller ပဖေစမတလ တApp\Http\Controller တလ လတိကလ တိ use Keyword နလတ ကကကပငာရယသူထားပြါတယမ။ ဆေကမလကမပပြပြီး Request, Validator,Auth စတလ တ Class ကတတွေကလ တိလညမး အသသလ းပပြမယမလ အကကကာငမး ကကကပငာထားပြါတယမ။ ကနာကမဆေသလ းအကနနလတ ကကျွနမကတာမတလ လတိ ကကတိတငမကရးစားထားတလ တ User Model ကလ တိ အသသလ းပပြမယမလ အကကကာငမး ကကကပငာထားပြါတယမ။

• index Action က Authenticate ပဖေစမမပဖေစမစပြီစစမပပြပြီး Authenticate ပဖေစမပပြပြီးသားဆေလ တိရငမ user/profile Route ကလ တိRedirect လလ ပြမထားပြါတယမ။ Authenticate မပဖေစမကသးရငမကတာလ user/login View ကလ တိ ကဖောမပပြကစထားပြါတယမ။

• login Action ကကတာလ Login Form က ကပြးပြလ လတိလာတလ တ Input Data ကလ တိ ယသူ ပပြပြီး Auth::attempt() နလတAuthenticate လလ ပြမကစပြါတယမ။ Authenticate လလ ပြမငနမးကအာငမပမငမရငမ user/profile Route ကလ တိ Redirect လလ ပြမကစပပြပြီး၊ မကအာငမပမငမရငမကတာလ user/login Route ကလ တိ Error Message နလတအတသူ Redirect လလ ပြမကစပြါတယမ။

• register Action က Authenticate ပဖေစမမပဖေစမစပြီစစမပပြပြီး Authenticate ပဖေစမပပြပြီးသားဆေလ တိရငမ user/profile Routeကလ တိ Redirect လလ ပြမထားပြါတယမ။ Authenticate မပဖေစမကသးရငမကတာလ user/register View ကလ တိ ကဖောမပပြကစထားပြါတယမ။

• create Action ကကတာလ Register Form က ကပြးပြလ လတိလာတလ တ Input Data ကလ တိ Validate စစမပြါတယမ။ email Fieldအတတွေကမ unique ကလ တိ ထညမလ စစမထားတာကလ တိ သတတိပပြပြါ။ unique:users ရ လတ အဓတိပြပ္ပါယမက users Table ထတမမှ ာ အရငမက email ရတိမှ ပပြပြီးသားလားဆေလ တိတာကလ တိ စစမခေလ တိငမးလလ တိကမတလ တသကဘောပဖေစမပြါတယမ။ Validation Pass ပဖေစမရငမ Model ရ လတinsert() Function ကလ တိ သသလ းပပြပြီး User Data ကလ တိ users Table ထတမမှ ာ ထညမလ သတွေငမးကစပြါတယမ။ ပပြပြီးတလ တအခေါuser/login Route ကလ တိ Redirect လလ ပြမပြါတယမ။ Validation Fail ပဖေစမရငမကတာလ user/register Route ကလ တိError Message နလတတစမကတွေ Redirect လလ ပြမထားပြါတယမ။

Page 21: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

• profile Action ကကတာလ Authenticate ပဖေစမမပဖေစမစပြီစစမပပြပြီး Authenticate မပဖေစမကသးရငမ user/login Route ကလ တိRedirect လလ ပြမထားပြါတယမ။ Authenticate ပဖေစမပပြပြီးသားဆေလ တိရငမကတာလ user/profile View ကလ တိ ကဖောမပပြကစပပြပြီး၊ View နလတအတသူ အသသလ းပပြနလ တိငမဖေလ လတိအတတွေကမ လကမရတိမှ Login ဝငမထားသသူ User ရ လတ အခေချကမအလကမကတတွေကလ တိ တတတွေဖေကမထညမလ သတွေငမး ကပြးထားပြါတယမ။

ကချနမ update, logout နလတ delete Action ကတတွေကလ တိကတာလ ကလ တိယမတလ တိငမပြတ ဆေကမလကမကလလလာ ကကညမလ လလ တိကမပြါ။

လလ တိအပြမတလ တ Route, Model နလတ Controller တလ လတိ ရရတိမှ သတွေားပပြပြီ ပဖေစမလလ လတိ View Template ကတတွေ ဆေကမလကမတညမကဆောကမရပြါမယမ။ MasterView ပဖေစမတလ တ /resources/views/template.blade.php မမှ ာ ကအာကမပြါအတလ တိငမး ကရးသားကပြးပြါ။

<!DOCTYPE html><html lang="en"><head>

<meta charset="UTF-8"><title>Laravel Example</title>

<link href="<?= URL::asset('css/app.css') ?>" rel="stylesheet"></head><body>

<h1>Laravel Example</h1><div class="container">

@yield("main")</div>

</body></html>

CSS ဖေလ တိငမခေချတိတမဆေကမဖေလ လတိအတတွေကမ Path လမမးကကကာငမးကလ တိ URL::asset() အကသူအညပြီနလတ ရယသူထားတာကလ တိ သတတိပပြပြါ။ ဆေကမလကမပပြပြီး/resources/views/user/login.blade.php မမှ ာ ကအာကမပြါအတလ တိငမး ကရးသားကပြးပြါ။

@extends("template")

@section("main")<h2>Login</h2>

<? if( count($errors) ): ?><div class="errors">

<ul><? foreach($errors->all() as $err): ?>

<li><?= $err ?></li><? endforeach; ?>

</ul></div><? endif; ?>

<? if( session('info') ): ?><div class="info">

<?= session('info') ?></div><? endif; ?>

<form method="post" action="<?= URL::to('user/login') ?>"><input type="hidden" name="_token" value="<?= csrf_token() ?>">

<input type="email" name="email" required placeholder="Your Email"><br><input type="password" name="password" required placeholder="Password">

<br><br>

<input type="submit" value="Login"><a href='<?= URL::to('user/register') ?>'>Register</a>

</form>@stop

Page 22: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

Login Form တစမခေလ ပဖေစမပပြပြီး Error နလတ Message ကတတွေရတိမှ ရငမ ကဖောမပပြဖေလ လတိ တစမခေါတညမး သတမမမှ တမထားပြါတယမ။ ကအာကမနားမမှ ာuser/register Route ကလ တိ ညညွှနမးထားတလ တ Link တစမခေလ လညမး ထညမလ ထားပြါကသးတယမ။ ဆေကမလကမပပြပြီး Register Form အတတွေကမ/resources/views/user/register.blade.php မမှ ာ ကအာကမပြါအတလ တိငမး ကရးသားပြါ။

@extends("template")

@section("main")<h2>Register</h2>

<? if( count($errors) ): ?><div class="errors">

<ul><? foreach($errors->all() as $err): ?>

<li><?= $err ?></li><? endforeach; ?>

</ul></div><? endif; ?>

<form action="<?= URL::to('user/register') ?>" method="post">

<input type="hidden" name="_token" value="<?= csrf_token() ?>">

<input type="text" name="name" required placeholder="Your Name"><br><input type="email" name="email" required placeholder="Your Email"><br><input type="password" name="password" required

placeholder="Password"><br><input type="password" name="password_again" required

placeholder="Password Again">

<br><br>

<input type="submit" value="Register"><a href='<?= URL::to('user/login') ?>'>Login</a>

</form>@stop

ဆေကမလကမပပြပြီး User Profile ကဖောမပပြဖေလ လတိအတတွေကမ /resources/views/user/profile.blade.php မမှ ာ ကအာကမပြါအတလ တိငမး ကရးသားကပြးပြါ။

@extends("template")

@section("main")<? if( session('info') ): ?><div class="info">

<?= session('info') ?></div><? endif; ?>

<form action="<?= URL::to('user/profile') ?>" method="post">

<input type="hidden" name="_token" value="<?= csrf_token() ?>">

<input type="text" name="name" required value="<?= $name ?>">Name<br><input type="email" name="email" required value="<?= $email ?>">Email<br><br><input type="text" name="phone" value="<?= $phone ?>">Phone<br>

<input type="text" name="address" value="<?= $address ?>">Address

<br><br><input type="password" name="password">

Page 23: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

Password<br><br>

<input type="submit" value="Update">

<br><br>

<a href="<?= URL::to("user/logout") ?>">Logout</a> |<a href="<?= URL::to("user/delete/$id") ?>">Delete Account</a>

</form>@stop

လလ တိအပြမတလ တ M-V-C Code ကတတွေကတာလ ပပြညမလ စသလ ပြါပပြပြီ။ Style အခေချ တိိ လထညမလ သတွေငမးလလ တိတလ တအတတွေကမ /public/css/app.css မမှ ာရတိမှ ကနတလ တမသူလ CSS ကတတွေကလ တိ ကအာကမပြါ CSS Code နလတ အစားထလ တိးလလ တိကမပြါ။

html, body {margin: 0;padding: 0;font-family: arial, sans-serif;

}html {

background: #efefef;}

body {width: 600px;margin: 20px auto;background: #fff;padding: 20px;border: 4px solid #ddd;border-radius: 5px;

}

h1 {margin: 0 0 20px 0;padding: 0 0 10px 0;border-bottom: 1px solid #ddd;font-size: 21px;

}

h2 {color: #555;padding: 0;margin: 0 0 10px 0;font-size: 16px;

}

.errors {background: #fee;border: 1px solid #900;font-size: 13px;margin: 10px 0;

}

.info {background: #def;border: 1px solid #09f;font-size: 13px;padding: 10px;margin: 10px 0;

}

လလ တိအပြမတလ တ Code ကတတွေကတာလ စသလ ပြါပပြပြီး။ Database Table တစမခေလ တညမကဆောကမကပြးရပြါဦပြီးမယမ။ phpMyAdmin ကလ တိဖေတွေငမလ ပပြပြီး mydb ဆေလ တိတလ တအမညမနလတ Database တစမခေလ တညမကဆောကမပြါ။ ပပြပြီးတလ တအခေါ users ဆေလ တိတလ တ အမညမနလတ Table တစမခေလ ကလ တိ ကအာကမပြါ Field ကတတွေနလတတညမကဆောကမကပြးပြါ။

Page 24: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

users Tableid – INT – Auto Increment / Primary Keyname – VARCHAR (255)email – VARCHAR (255)phone – VARCHAR (255)address – TEXTpassword – VARCHAR (255)remember_token – VARCHAR (255)

ပပြပြီးတလ တအခေါ စတငမစမမးသပြမနလ တိငမဖေလ လတိအတတွေကမ Setting ကလးတစမခေချ တိိ လကတာလ ပပြငမကပြးရပြါဦပြီးမယမ။ ကကျွနမကတာမတလ လတိက Eloquent ORM ကလ တိ မသသလ းထားတလ တအတတွေကမ /config/auth.php မမှ ာ –

'driver' => 'eloquent'

ကလ တိ ကအာကမပြါအတလ တိငမး ကပပြာငမးကပြးဖေလ လတိ လလ တိပြါတယမ။

'driver' => 'database'

ပပြပြီးတလ တအခေါ /config/database.php မမှ ာ Database Setting ကတတွေကလ တိ အခေလ လလ တိ ပပြငမဆေငမကပြးရပြါမယမ။

'mysql' => ['driver' => 'mysql','host' => 'localhost','database' => 'mydb','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '','strict' => false,

]

database, username နလတ password တလ လတိကလ တိ သငမလ ကတာမသလလ တိ ပပြငမဆေငမကပြးရမမှ ာ ပဖေစမပြါတယမ။ အားလသလ းပပြညမလ စသလ ပပြပြီမလ လတိ အခေလ ကနBrowser မမှ ာ localhost/larapack/public ကလ တိ ညညွှနမးလလ တိကမရငမ Login Form တစမခေလ ကလ တိ ကတတွေ လပမငမရမမှ ာပြတ ပဖေစမပြါတယမ။ကကျွနမကတာမတလ လတိက Route မမှ ာ Root URI နလတ Request လလ ပြမလာခေလ တရငမ UserController ရ လတ index Action ကလ တိ အလလ ပြမလလ ပြမကပြးဖေလ လတိသတမမမှ တမထားတလ တအတတွေကမ ပဖေစမပြါတယမ။ index Action က user/login View ကလ တိ ကဖောမပပြဖေလ လတိ ဆေကမလကမ သတမမမှ တမထားတလ တအတတွေကမ Login Form ကလ တိ ပမငမကတတွေ လရပခေငမးပဖေစမပြါတယမ။

Register ပပြလလ ပြမကကညမလ ပခေငမး၊ Login ပပြလလ ပြမကကညမလ ပခေငမးအားပဖေငမလ စတငမစမမးသပြမအသသလ းပပြနလ တိငမပပြပြီ ပဖေစမပြါတယမ။

Page 25: MVC with Laravel - eimaung.com · ဆေကမလကမပပြပြီး Laravel PHP Framework ကလတိ အသသလးပပြပပြပြီး MVC ပြသလစသ

ကရးသားထားတလ တနမသူ နာ Code ကလ တိ ကအာကမပြါလတိပြမစာမမှ ာ Download ရယသူနလ တိငမပြါတယမ။

https://github.com/eimg/laravel-example.git

ConclusionLaravel ဟာ ထသူ းပခေားအသသလ းဝငမတလ တ လလ ပြမကဆောငမခေချကမကတတွေ အမချားအပပြားပြါဝငမတလ တ Framework တစမခေလ ပဖေစမပြါတယမ။ ဒပြီကနရာမမှ ာကတာလLaravel ကလ တိ အသသလ းပပြပပြပြီး M-V-C Code ကတတွေ ကရးသားနလ တိငမပြသလ ကလ တိသာ ကဖောမပပြခေလ တပခေငမးပဖေစမပြါတယမ။ Laravel ရ လတ အားသာခေချကမကတတွေကလ တိ ထတိထတိကရာကမကရာကမ အသသလ းခေချနလ တိငမကစဖေလ လတိအတတွေကမ ကအာကမပြါနညမးပြညာမချားကလ တိ အဆေငမလ လလ တိကမ ဆေကမလကမကလလလာသတွေားသငမလ ပြါတယမ။

Composer - https://getcomposer.org/Database Migration - http://laravel.com/docs/5.1/migrationsEloquent ORM - http://laravel.com/docs/5.1/eloquentBlade Template Engine - http://laravel.com/docs/5.1/bladeArtisan CLI - http://laravel.com/docs/5.1/artisanMiddleware - http://laravel.com/docs/5.1/middlewareHomestead - http://laravel.com/docs/5.1/homestead

အအိမမောငန (Fairway Web)၂၂ ဒပြီဇငမဘော၊ ၂၀၁၅

Professional Web Developer (တတတိယအကကတိမမ) မမှ ကကာကမနနှုတမကဖောမပပြသညမ။http://pwdbook.com