หากคุณเคยเข้าร่วม Hackathons มาก่อน คุณจะรู้ว่าต้องใช้เวลานานเท่าใดในการเริ่มต้นโปรเจ็กต์: ตัดสินใจว่าจะสร้างอะไร เลือกภาษาการเขียนโปรแกรม เลือกเฟรมเวิร์กเว็บ เลือกเฟรมเวิร์ก CSS หลังจากนั้นไม่นาน คุณอาจมีโปรเจ็กต์เริ่มต้นบน GitHub จากนั้นสมาชิกในทีมคนอื่นๆ จะสามารถเริ่มมีส่วนร่วมได้เท่านั้น หรือลองทำบางอย่างง่ายๆ เช่น ลงชื่อเข้าใช้ด้วยการรับรองความถูกต้องของ Facebook ล่ะ? คุณสามารถใช้เวลาหลายชั่วโมงหากคุณไม่คุ้นเคยกับวิธีการทำงานของ OAuth 2.0
แม้ว่าคุณจะไม่ได้ใช้สิ่งนี้กับแฮ็กกาธอน แต่ Laravel Hackathon Starter จะช่วยประหยัดเวลาของนักพัฒนาหรือแม้แต่วันในการพัฒนา และสามารถใช้เป็นแนวทางการเรียนรู้สำหรับนักพัฒนาเว็บได้
Laravel เป็นเฟรมเวิร์กแอปพลิเคชันเว็บที่มีไวยากรณ์ที่ชัดเจนและสวยงาม Laravel พยายามที่จะขจัดความเจ็บปวดจากการพัฒนาโดยทำให้งานทั่วไปที่ใช้ในโปรเจ็กต์เว็บส่วนใหญ่ง่ายขึ้น เช่น การรับรองความถูกต้อง การกำหนดเส้นทาง เซสชัน การจัดคิว และการแคช
Laravel Hackathon Starter เป็นแอปพลิเคชันสำเร็จรูปที่พัฒนาด้วย Laravel 5.2 เพื่อให้คุณก้าวนำหน้าใน Hackathons
xcode-select --install )sudo apt-get install build-essentialsudo dnf groupinstall "Development Tools"sudo zypper install --type pattern devel_basisnpm install -g @useoptic/cli (จำเป็นสำหรับเอกสารอัตโนมัติ)หมายเหตุ: หากคุณยังใหม่กับ Laravel ฉันขอแนะนำให้ดูหน้าจอ Laravel From Scratch โดย Jeffery Way ที่สอน Laravel 5 ตั้งแต่เริ่มต้น อีกทางเลือกหนึ่ง นี่คืออีกหนึ่งบทช่วยสอนที่ยอดเยี่ยมสำหรับการสร้างแอปการจัดการโครงการสำหรับผู้เริ่มต้น/นักพัฒนาระดับกลาง - วิธีสร้างแอปการจัดการโครงการใน Laravel 5
# Get the project
git clone https://github.com/unicodeveloper/laravel-hackathon-starter.git hackathon-starter-pack
# Change directory
cd hackathon-starter-pack
# Copy .env.example to .env
cp .env.example .env
# Create a database (with mysql or postgresql)
# And update .env file with database credentials
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_DATABASE=laravelhackathon
# DB_USERNAME=root
# DB_PASSWORD=root
# Install Composer dependencies
composer install
# Generate application secure key (in .env file)
php artisan key:generate
# Generate application secure key (in .env file)
php artisan key:generate
php artisan serveขั้นแรก ดาวน์โหลด Laravel Hackathon Starter Pack Installer โดยใช้ Composer:
composer global require "unicodeveloper/hackathon-installer"
ตรวจสอบให้แน่ใจว่าได้วาง ~/.composer/vendor/bin ไดเร็กทอรี (หรือไดเร็กทอรีที่เทียบเท่าสำหรับระบบปฏิบัติการของคุณ) ใน PATH ของคุณเพื่อให้ไฟล์ปฏิบัติการ larathon สามารถระบุตำแหน่งได้โดยระบบของคุณ
เมื่อติดตั้งแล้ว คำสั่ง larathon new จะสร้างการติดตั้ง Laravel Hackathon Starter Pack ใหม่ในไดเร็กทอรีที่คุณระบุ ตัวอย่างเช่น larathon new mvp จะสร้างไดเร็กทอรีชื่อ mvp ที่มีการติดตั้ง Laravel Hackathon Starter Pack ใหม่พร้อมการขึ้นต่อกันทั้งหมดที่ติดตั้งไว้แล้ว วิธีการติดตั้งนี้เร็วกว่าการติดตั้งผ่าน Composer มาก:
larathon new mvp
หรือคุณสามารถติดตั้ง Laravel Hackathon Starter Pack ได้ด้วยการใช้คำสั่ง Composer create-project ในเทอร์มินัลของคุณ:
composer create-project --prefer-dist unicodeveloper/laravel-hackathon-starter hotel
ชุดเริ่มต้นนี้ประกอบด้วย API ต่อไปนี้ คุณจะต้องได้รับข้อมูลประจำตัวที่เหมาะสม เช่น รหัสไคลเอ็นต์, ความลับ zClient, คีย์ API หรือชื่อผู้ใช้และรหัสผ่าน โดยไปที่ผู้ให้บริการแต่ละรายและสร้างข้อมูลประจำตัวใหม่
.env หมายเหตุ: เมื่อคุณพร้อมที่จะปรับใช้กับการใช้งานจริง อย่าลืมเพิ่ม URL ใหม่ของคุณไปยัง ต้นกำเนิด Javascript ที่ได้รับอนุญาต และ URI การเปลี่ยนเส้นทางที่ได้รับอนุญาต เช่น http://my-awesome-app.herokuapp.com และ http://my-awesome-app.herokuapp.com/auth/google/callback ตามลำดับ เช่นเดียวกับผู้ให้บริการรายอื่น
.envhttp://localhost:3000 ใต้ URL ของไซต์ หมายเหตุ: หลังจากลงชื่อเข้าใช้ด้วย Facebook สำเร็จ ผู้ใช้จะถูกเปลี่ยนเส้นทางกลับไปที่หน้าแรกพร้อมกับแฮชต่อท้าย #_=_ ใน URL มัน ไม่ใช่ ข้อผิดพลาด ดูการสนทนา Stack Overflow นี้เพื่อดูวิธีจัดการ
.env.envr_basicprofile.env env.env.env.env.env.env.env.env.env.env รัน php artisan vendor:publish
| ชื่อ | คำอธิบาย |
|---|---|
| กำหนดค่า /app.php | การกำหนดค่าสำหรับผู้ให้บริการและส่วนหน้า |
| กำหนดค่า /auth.php | การกำหนดค่าสำหรับการรีเซ็ตรหัสผ่าน |
| กำหนดค่า /broadcasting.php | การกำหนดค่าสำหรับการออกอากาศ |
| กำหนดค่า /cache.php | การกำหนดค่าสำหรับการสร้างและการจัดเก็บแคช |
| กำหนดค่า /cloudder.php | การกำหนดค่าสำหรับ cloudinary |
| กำหนดค่า /compile.php | การกำหนดค่าสำหรับการรวบรวม |
| กำหนดค่า /database.php | การกำหนดค่าสำหรับไดรเวอร์ฐานข้อมูล |
| กำหนดค่า /filesystems.php | การกำหนดค่าสำหรับระบบไฟล์ต่างๆ |
| กำหนดค่า /github.php | การกำหนดค่าสำหรับ github API |
| กำหนดค่า /mail.php | การกำหนดค่าสำหรับเมล |
| กำหนดค่า /queue.php | การกำหนดค่าสำหรับคิว |
| กำหนดค่า /services.php | การกำหนดค่าสำหรับบริการต่างๆ เช่น mailgun เป็นต้น |
| กำหนดค่า /session.php | การกำหนดค่าสำหรับเซสชัน |
| ตั้งค่า /ttwitter.php | ไฟล์กำหนดค่า Twitter API |
| กำหนดค่า /twilio.php | ไฟล์กำหนดค่า Twilio API |
| กำหนดค่า /view.php | การกำหนดค่าตำแหน่งของมุมมองและแคชมุมมอง |
| ตัวควบคุม /AccountController.php | ผู้ควบคุมสำหรับการจัดการบัญชี |
| ตัวควบคุม /AviaryController.php | ตัวควบคุมสำหรับฟังก์ชัน Aviary API |
| ตัวควบคุม /ClockworkController.php | คอนโทรลเลอร์สำหรับฟังก์ชัน Clockwork API |
| ตัวควบคุม /ContactController.php | ตัวควบคุมสำหรับหน้าการติดต่อ |
| คอนโทรลเลอร์ /Controller.php | ตัวควบคุมฐาน |
| ตัวควบคุม /GithubController.php | คอนโทรลเลอร์สำหรับฟังก์ชัน Github API |
| ตัวควบคุม /LastFmController.php | คอนโทรลเลอร์สำหรับฟังก์ชัน LastFM API |
| ตัวควบคุม /LobController.php | ตัวควบคุมสำหรับการทำงานของ Lob API |
| คอนโทรลเลอร์ /NytController.php | ตัวควบคุมสำหรับฟังก์ชันการทำงานของ New York Times API |
| ตัวควบคุม /OauthController.php | ตัวควบคุมสำหรับการรับรองความถูกต้อง |
| ตัวควบคุม /PaypalController.php | ตัวควบคุมสำหรับฟังก์ชันการทำงานของ Paypal API |
| คอนโทรลเลอร์ /SteamController.php | ตัวควบคุมสำหรับฟังก์ชันการทำงานของ Stream API |
| คอนโทรลเลอร์ /StripeController.php | คอนโทรลเลอร์สำหรับฟังก์ชัน Stripe API |
| ตัวควบคุม /TwilioController.php | คอนโทรลเลอร์สำหรับฟังก์ชัน Twilio API |
| ตัวควบคุม /TwitterController.php | ตัวควบคุมสำหรับฟังก์ชัน Twitter API |
| ตัวควบคุม /WebScrapingController.php | ตัวควบคุมสำหรับการขูดเว็บ |
| ตัวควบคุม /YahooController.php | คอนโทรลเลอร์สำหรับฟังก์ชัน Yahoo API |
| ตัวควบคุม /user.js | ตัวควบคุมสำหรับการจัดการบัญชีผู้ใช้ |
| รุ่น /User.php | รุ่นสำหรับผู้ใช้ |
| สาธารณะ / | เนื้อหาคงที่ (แบบอักษร, css, js, img) |
| สาธารณะ / css /main.css | สไตล์ชีตหลักสำหรับแอปของคุณ |
| ทรัพยากร/มุมมอง/บัญชี / | เทมเพลตสำหรับ การเข้าสู่ระบบ การรีเซ็ตรหัสผ่าน การสมัคร โปรไฟล์ |
| มุมมอง/api / | เทมเพลตสำหรับตัวอย่าง API |
| มุมมอง/บางส่วน /alerts.blade.php | การแจ้งเตือนข้อผิดพลาด ข้อมูล และความสำเร็จแบบแฟลช |
| มุมมอง/บางส่วน /navbar.blade.php | เทมเพลต Navbar บางส่วน |
| มุมมอง /layouts**/master.blade.php | เทมเพลตฐาน |
| มุมมอง /apidashboard.blade.php | เทมเพลตแดชบอร์ด API |
| มุมมอง /contact.blade.php | เทมเพลตหน้าการติดต่อ |
| มุมมอง /welcome.blade.php | เทมเพลตหน้าแรก |
| .travis.yml | การบูรณาการทราวิส CI |
| .env.ตัวอย่าง | คีย์ API, โทเค็น, รหัสผ่าน และ URI ฐานข้อมูลของคุณ |
| ผู้แต่ง.json | ไฟล์สำหรับโหลดแพ็คเกจ php ทั้งหมด |
| แพ็คเกจ.json | ไฟล์สำหรับโหลดโมดูลโหนดที่จำเป็นทั้งหมด |
| ช่าง | ไฟล์สำหรับเปิดใช้งานคำสั่งให้ทำงาน |
| บรรจุุภัณฑ์ | คำอธิบาย |
|---|---|
| สังคม | ลงชื่อเข้าใช้ด้วย Facebook, Twitter และ Github |
| ผู้ให้บริการทางสังคม | ลงชื่อเข้าใช้ด้วย LinkedIn, Instagram |
| คลาวด์เดอร์ | อัปโหลดภาพไปยัง Cloudinary |
| laravel github | ไลบรารี Github API |
| เครื่องจักร | ห้องสมุด Clockwork SMS API |
| โรคเกาต์ | ขูดหน้าเว็บโดยใช้ไวยากรณ์สไตล์ jQuery |
| เฟรมเวิร์กลาร์ราเวล | กรอบเว็บ PHP |
| พูดเบาและรวดเร็ว | ไลบรารี Twitter API |
| ทวิลิโอ | ไลบรารี Twilio API |
| lob-php.php | ไลบรารี Lob API |
| Lastfm-api-wrapper | ไลบรารี Lastfm API |
| phpunit | ไลบรารีการทดสอบ PHP |
| พูดอย่างตะกละตะกลามhttp | ไลบรารีคำขอ HTTP แบบง่าย |
เมื่อใช้ Optic คุณจะสามารถใช้ API ของคุณได้ตามปกติและบันทึกการเปลี่ยนแปลงพฤติกรรมโดยอัตโนมัติ หากต้องการเปิดใช้งาน คุณจะต้องดาวน์โหลด Optic ก่อน
npm install -g @useoptic/cli เมื่อคุณติดตั้ง Optic แล้ว คุณสามารถเริ่มบันทึกคำขอของคุณได้โดยเรียกใช้ api start การรันคำสั่งนี้จะสร้างเวอร์ชันพร็อกซีของ API ของคุณ ซึ่งพร้อมใช้งานที่ localhost:4000 - ตอนนี้คุณสามารถใช้ API ได้ตามปกติที่นี่ และ Optic จะสังเกตเห็นความแตกต่างในลักษณะการทำงานที่บันทึกไว้โดยอัตโนมัติ ทำให้คุณสามารถสร้างเอกสารได้โดยอัตโนมัติเมื่อ API ของคุณมีการเปลี่ยนแปลง .
หากต้องการดูเอกสารประกอบปัจจุบันของ api ให้เรียกใช้ api spec ที่ไดเรกทอรีราก
api start # use this to start monitoring your API
api spec # use this to inspect the current documentation of your API
api generate:oas # generates an OpenAPI specification for your currently documented APIสำหรับข้อมูลเพิ่มเติมเกี่ยวกับ Optic โปรดดูเอกสาร
Token Mismatch Exception เมื่อส่งแบบฟอร์มคุณต้องเพิ่มองค์ประกอบอินพุตที่ซ่อนอยู่ต่อไปนี้ในแบบฟอร์มของคุณ สิ่งนี้ได้ถูกเพิ่มเข้าไปใน codebase ที่มีอยู่โดยเป็นส่วนหนึ่งของการป้องกัน CSRF
{!! csrf_field() !!}
เป็นไปได้ว่าคุณยังไม่ได้สร้างคีย์แอป ดังนั้นให้เรียกใช้ php artisan key:generate เป็นไปได้ว่าคุณไม่ได้ใส่ข้อมูลประจำตัวของคุณในไฟล์ .env
ส่วนนี้มีไว้เพื่อให้คำอธิบายโดยละเอียดเกี่ยวกับวิธีการทำงานของฟังก์ชันนั้นๆ บางทีคุณอาจแค่สงสัยว่ามันทำงานอย่างไร หรือบางทีคุณอาจหลงทางและสับสนในขณะที่อ่านโค้ด ฉันหวังว่ามันจะให้คำแนะนำแก่คุณได้
ข้อความแฟลชช่วยให้คุณสามารถแสดงข้อความในตอนท้ายของคำขอและเข้าถึงได้เมื่อมีการร้องขอครั้งต่อไปและเฉพาะคำขอถัดไปเท่านั้น ตัวอย่างเช่น เมื่อพยายามเข้าสู่ระบบไม่สำเร็จ คุณจะแสดงการแจ้งเตือนพร้อมข้อความแสดงข้อผิดพลาด แต่ทันทีที่คุณรีเฟรชหน้านั้นหรือไปที่หน้าอื่นและกลับมาที่หน้าเข้าสู่ระบบ ข้อความแสดงข้อผิดพลาดนั้นจะหายไป จะแสดงเพียงครั้งเดียวเท่านั้น ข้อความแฟลชทั้งหมดมีอยู่ในมุมมองของคุณผ่านเซสชัน laravel
วิธีที่ถูกต้องมากขึ้นในการพูดว่า "ฉันจะสร้างเส้นทางใหม่ได้อย่างไร" ไฟล์หลัก routes.php มีเส้นทางทั้งหมด แต่ละเส้นทางมีฟังก์ชันโทรกลับที่เกี่ยวข้อง บางครั้งคุณจะเห็นข้อโต้แย้ง 3 ข้อขึ้นไปในเส้นทาง ในกรณีเช่นนั้น อาร์กิวเมนต์แรกยังคงเป็นสตริง URL ในขณะที่อาร์กิวเมนต์กลางคือสิ่งที่เรียกว่ามิดเดิลแวร์ คิดว่ามิดเดิลแวร์เป็นเหมือนประตู หากประตูนี้ขัดขวางไม่ให้คุณก้าวไปข้างหน้า คุณจะไม่สามารถเข้าสู่ฟังก์ชันโทรกลับได้ ตัวอย่างหนึ่งคือเส้นทางที่ต้องมีการรับรองความถูกต้อง
Route:: get ( ' /account ' , ' UserController@getAccount ' ); มันจะไปจากซ้ายไปขวาเสมอ ผู้ใช้เข้าชม /account จากนั้นมิดเดิลแวร์ตรวจสอบ auth ตรวจสอบว่าคุณได้รับการรับรองความถูกต้องหรือไม่:
Route:: get ( ' /account ' , [
' uses ' => ' AccountController@getAccountPage ' ,
' as ' => ' account.dashboard ' ,
' middleware ' => [ ' auth ' ]
]); หากคุณได้รับการรับรองความถูกต้อง คุณจะปล่อยให้ผู้เยี่ยมชมรายนี้ผ่าน "ประตู" ของคุณโดยการเรียก return $next($request); ในมิดเดิลแวร์การรับรองความถูกต้อง และหากคุณได้รับการรับรองความถูกต้อง คุณจะถูกนำไปที่หน้า การจัดการบัญชี มิฉะนั้น คุณจะถูกนำไปที่หน้า เข้าสู่ระบบ
ต่อไปนี้เป็นขั้นตอนการทำงานทั่วไปสำหรับการเพิ่มเส้นทางใหม่ให้กับแอปพลิเคชันของคุณ สมมติว่าเรากำลังสร้างเพจที่แสดงรายการหนังสือทั้งหมดจากฐานข้อมูล
ขั้นตอนที่ 1 เริ่มต้นด้วยการกำหนดเส้นทาง
Route:: get ( ' /books ' , ' BookController@getBooks ' ); ขั้นตอนที่ 2 สร้างโมเดล Book.php ภายในไดเร็กทอรี แอป คุณสามารถรัน php artisan make:model Book
namespace App ;
class Book
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $ fillable = [
' name ' , ' isbn ' ,
];
} ขั้นตอนที่ 3 สร้างไฟล์การโยกย้าย เช่น: php artisan make:migration create_books_table
use Illuminate Database Schema Blueprint ;
use Illuminate Database Migrations Migration ;
class CreateBooksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up ()
{
Schema:: create ( ' books ' , function ( Blueprint $ table ) {
$ table -> increments ( ' id ' );
$ table -> string ( ' name ' );
$ table -> string ( ' isbn ' );
$ table -> timestamps ();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down ()
{
Schema:: drop ( ' books ' );
}
} ขั้นตอนที่ 4 สร้างไฟล์คอนโทรลเลอร์ใหม่ชื่อ BookController ภายในไดเร็กทอรี app/Http/Controllers คุณสามารถเรียกใช้ php artisan make:controller BookController
namespace App Http Controllers ;
use Illuminate Http Request ;
use App Book ;
use App Http Requests ;
use App Http Controllers Controller ;
class BookController extends Controller
{
/**
* Return all books
* @return mixed
*/
public function getBooks ()
{
$ books = Book:: all ();
return view ( ' books ' )-> withBooks ( $ books );
}
} ขั้นตอนที่ 5 สร้างเทมเพลต books.blade.php
@ extends ( ' layouts.master ' )
@ section ( ' content ' )
<div class="main-container">
@ include ( ' layouts.partials.alerts ' )
<div class="page-header">
<h2><i style="color: #f00 " class=" fa fa - book"></i>All Books</h2>
</div>
<ul>
@ foreach ( $ books as $ book )
<li> {{ $ book -> name }} </li>
@endforeach
</div>
</div>
@stopแค่นั้นแหละ!
เมื่อคุณพร้อมที่จะปรับใช้แอปของคุณ คุณจะต้องสร้างบัญชีด้วยแพลตฟอร์มคลาวด์เพื่อโฮสต์แอป นี่ไม่ใช่ตัวเลือกเดียวเท่านั้น แต่เป็นตัวเลือกอันดับต้น ๆ ของฉัน จากประสบการณ์ของฉัน Heroku เป็นวิธีที่ง่ายที่สุดในการเริ่มต้นใช้งาน การปรับใช้และการสนับสนุนโดเมนแบบกำหนดเองบนบัญชีฟรี
heroku login และป้อนข้อมูลรับรอง Heroku ของคุณheroku createweb: vendor/bin/heroku-php-nginx public หรือ web: vendor/bin/heroku-php-apache2 public หากคุณต้องการใช้ nginxheroku addons:add heroku-postgresql:dev เพื่อเพิ่มฐานข้อมูล Postgres ไปยังแอป heroku จากเทอร์มินัลของคุณgit push heroku master เสร็จแล้ว!heroku run php artisan migrateหมายเหตุ: หากต้องการติดตั้งส่วนเสริม Heroku บัญชีของคุณจะต้องได้รับการยืนยัน
git push -f openshift master-f (บังคับ) เนื่องจาก OpenShift จะสร้างเซิร์ฟเวอร์จำลองพร้อมกับเพจต้อนรับเมื่อคุณสร้างแอป Node.js ใหม่ การผ่านแฟล็ก -f จะแทนที่ทุกสิ่งด้วยพื้นที่เก็บข้อมูลโปรเจ็กต์ Hackathon Starter ของคุณ อย่า เรียกใช้ git pull เนื่องจากจะทำให้เกิดความขัดแย้งในการผสานโดยไม่จำเป็นgit remote add azure [Azure Git URL]git push azure masterหมายเหตุ: คำแนะนำทางเลือก รวมถึงวิธีการตั้งค่าโปรเจ็กต์ด้วยไปป์ไลน์ DevOps มีอยู่ที่ http://ibm.biz/hackstart คำแนะนำเวอร์ชันยาวพร้อมภาพหน้าจอมีอยู่ที่ http://ibm.biz/hackstart2 นอกจากนี้ อย่าลืมตรวจสอบ Jump-start ความพยายามแฮ็กกาธอนของคุณด้วยวิดีโอ DevOps Services และวิดีโอ Bluemix
ขอขอบคุณที่พิจารณาการมีส่วนร่วมกับ Laravel Hackathon Starter คู่มือการบริจาคสามารถพบได้ในไฟล์การบริจาค
หากคุณพบช่องโหว่ด้านความปลอดภัยภายใน Laravel Hackathon Starter โปรดส่งอีเมลไปที่ Prosper Otemuyiwa ที่ [email protected] ช่องโหว่ด้านความปลอดภัยทั้งหมดจะได้รับการแก้ไขทันที
ทำไมไม่ติดดาว repo github? ฉันชอบที่จะได้รับความสนใจ! ทำไมไม่แชร์ลิงก์สำหรับพื้นที่เก็บข้อมูลนี้บน Twitter หรือ HackerNews กระจายคำ!
อย่าลืมติดตามฉันบนทวิตเตอร์!
ขอบคุณ! เจริญ โอเตมูยิวา.
ใบอนุญาตเอ็มไอที (MIT) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม