หากคุณเคยเข้าร่วม 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-essential
sudo dnf groupinstall "Development Tools"
sudo zypper install --type pattern devel_basis
npm 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
ตามลำดับ เช่นเดียวกับผู้ให้บริการรายอื่น
.env
http://localhost:3000
ใต้ URL ของไซต์ หมายเหตุ: หลังจากลงชื่อเข้าใช้ด้วย Facebook สำเร็จ ผู้ใช้จะถูกเปลี่ยนเส้นทางกลับไปที่หน้าแรกพร้อมกับแฮชต่อท้าย #_=_
ใน URL มัน ไม่ใช่ ข้อผิดพลาด ดูการสนทนา Stack Overflow นี้เพื่อดูวิธีจัดการ
.env
.env
r_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 create
web: 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) โปรดดูไฟล์ใบอนุญาตสำหรับข้อมูลเพิ่มเติม