과거에 해커톤에 참석해 본 적이 있다면 프로젝트를 시작하는 데 얼마나 많은 시간이 걸리는지 아실 것입니다. 무엇을 빌드할지 결정하고, 프로그래밍 언어를 선택하고, 웹 프레임워크를 선택하고, CSS 프레임워크를 선택하세요. 잠시 후 GitHub에 초기 프로젝트가 있을 수 있으며 그런 후에야 다른 팀 구성원이 기여를 시작할 수 있습니다. 아니면 Facebook 인증으로 로그인하는 것처럼 간단한 작업을 수행하는 것은 어떻습니까? OAuth 2.0의 작동 방식에 익숙하지 않은 경우 몇 시간을 소비할 수 있습니다.
해커톤을 위해 이것을 사용하지 않더라도 Laravel Hackathon Starter는 개발자의 개발 시간 또는 심지어 며칠의 개발 시간을 절약해 주고 웹 개발자를 위한 학습 가이드 역할을 할 수 있습니다.
Laravel은 표현력이 풍부하고 우아한 구문을 갖춘 웹 애플리케이션 프레임워크입니다. Laravel은 인증, 라우팅, 세션, 대기열 및 캐싱과 같은 대부분의 웹 프로젝트에서 사용되는 일반적인 작업을 용이하게 하여 개발의 어려움을 없애려고 합니다.
Laravel Hackathon Starter는 해커톤에서 앞서 나갈 수 있도록 Laravel 5.2로 개발된 상용구 애플리케이션입니다.
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 5를 처음부터 가르치는 Jeffery Way의 Laravel From Scratch 스크린캐스트를 시청하는 것이 좋습니다. 또는 초보자/중급 개발자를 위한 프로젝트 관리 앱을 구축하기 위한 또 다른 훌륭한 튜토리얼인 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
먼저 Composer를 사용하여 Laravel Hackathon Starter Pack 설치 프로그램을 다운로드하세요.
composer global require "unicodeveloper/hackathon-installer"
시스템에서 larathon
실행 파일을 찾을 수 있도록 ~/.composer/vendor/bin
디렉터리(또는 해당 OS에 해당하는 디렉터리)를 PATH에 배치해야 합니다.
일단 설치되면, larathon new
명령은 지정한 디렉토리에 새로운 Laravel Hackathon Starter Pack 설치를 생성합니다. 예를 들어, larathon new mvp
모든 종속성이 이미 설치된 새로운 Laravel Hackathon Starter Pack 설치를 포함하는 mvp
라는 디렉토리를 생성합니다. 이 설치 방법은 Composer를 통해 설치하는 것보다 훨씬 빠릅니다.
larathon new mvp
또는 터미널에서 Composer create-project
명령을 실행하여 Laravel Hackathon Starter Pack을 설치할 수도 있습니다.
composer create-project --prefer-dist unicodeveloper/laravel-hackathon-starter hotel
이 스타터 팩에는 다음 API가 포함되어 있습니다. 각 공급자를 통해 클라이언트 ID, zClient 비밀, API 키 또는 사용자 이름 및 비밀번호와 같은 적절한 자격 증명을 얻고 새 자격 증명을 생성해야 합니다.
.env
에 붙여넣습니다. 참고: 프로덕션에 배포할 준비가 되면 승인된 Javascript 원본 및 승인된 리디렉션 URI (예: http://my-awesome-app.herokuapp.com
및 http://my-awesome-app.herokuapp.com/auth/google/callback
에 새 URL을 추가하는 것을 잊지 마십시오. http://my-awesome-app.herokuapp.com/auth/google/callback
. 다른 제공업체도 마찬가지다.
.env
에 붙여넣습니다.http://localhost:3000
입력하세요. 참고: Facebook으로 성공적으로 로그인하면 사용자는 URL에 해시 #_=_
가 추가된 홈 페이지로 다시 리디렉션됩니다. 버그가 아닙니다 . 이를 처리하는 방법은 이 스택 오버플로 토론을 참조하세요.
.env
파일에 붙여넣으세요..env
파일에 붙여넣습니다.r_basicprofile
.env
파일에 붙여넣습니다..env
파일에 추가하십시오..env
파일에 붙여넣습니다..env
파일에 붙여넣습니다..env
파일에 붙여넣습니다..env
파일에 붙여넣기.env
파일에 입력하세요..env
파일에 붙여넣습니다..env
파일에 붙여넣습니다..env
파일에 붙여넣습니다. php artisan vendor:publish
이름 | 설명 |
---|---|
구성 /app.php | 서비스 제공업체 및 외관 구성 |
구성 /auth.php | 비밀번호 재설정을 위한 구성 |
구성 /broadcasting.php | 방송을 위한 구성 |
구성 /cache.php | 캐시 생성 및 저장을 위한 구성 |
구성 /cloudder.php | 구름이 많은 환경에 대한 구성 |
구성 /compile.php | 컴파일을 위한 구성 |
구성 /database.php | 데이터베이스 드라이버 구성 |
구성 /filesystems.php | 다양한 파일 시스템에 대한 구성 |
구성 /github.php | Github API 구성 |
구성 /mail.php | 메일 구성 |
구성 /queue.php | 대기열 구성 |
구성 /services.php | mailgun 등과 같은 여러 서비스에 대한 구성 |
구성 /session.php | 세션 구성 |
구성 /ttwitter.php | 트위터 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 | O인증 컨트롤러 |
컨트롤러 /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에 이미지 업로드 |
라라벨 github | Github API 라이브러리 |
시계 장치 | 시계태엽 SMS API 라이브러리. |
통풍 | jQuery 스타일 구문을 사용하여 웹페이지를 스크랩합니다. |
라라벨 프레임워크 | PHP 웹 프레임워크 |
지저귀다 | 트위터 API 라이브러리 |
황혼 | Twilio API 라이브러리 |
lob-php | 로브 API 라이브러리 |
lastfm-api-래퍼 | Lastfm API 라이브러리 |
PHP 단위 | PHP 테스트 라이브러리 |
꿀꺽꿀꺽http | 단순화된 HTTP 요청 라이브러리 |
Optic을 사용하면 API를 일반적인 방식으로 사용하여 동작 변경 사항을 자동으로 문서화할 수 있습니다. 이를 활성화하려면 먼저 Optic을 다운로드해야 합니다.
npm install -g @useoptic/cli
Optic을 설치한 후에는 api start
실행하여 요청 문서화를 시작할 수 있습니다. 이 명령을 실행하면 localhost:4000에서 사용할 수 있는 프록시 버전의 API가 생성됩니다. 이제 여기에서 평소와 같이 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
발생하는 이유는 무엇입니까?다음과 같은 숨겨진 입력 요소를 양식에 추가해야 합니다. 이는 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);
호출하여 이 방문자가 "문"을 통과하도록 허용합니다. auth 미들웨어에서 인증되면 계정 관리 페이지로 리디렉션되고, 인증되지 않으면 로그인 페이지로 리디렉션됩니다.
다음은 애플리케이션에 새 경로를 추가하는 일반적인 작업 흐름입니다. 데이터베이스의 모든 책을 나열하는 페이지를 구축한다고 가정해 보겠습니다.
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단계. app/Http/Controllers 디렉터리 내에 BookController
라는 새 컨트롤러 파일을 만듭니다. 간단히 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
또는 nginx를 사용하려는 경우 web: vendor/bin/heroku-php-apache2 public
입니다.heroku addons:add heroku-postgresql:dev
실행하여 터미널에서 heroku 앱에 Postgres 데이터베이스를 추가하세요.git push heroku master
실행하세요. 완료!heroku run php artisan migrate
참고: Heroku 추가 기능을 설치하려면 계정을 확인해야 합니다.
git push -f openshift master
실행하여 코드를 OpenShift로 푸시할 수 있습니다.-f
(force) 플래그를 전달해야 합니다. -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에서 볼 수 있습니다. 또한 DevOps 서비스 및 Bluemix 비디오를 통해 해커톤 활동을 시작하는 방법을 확인하십시오.
Laravel Hackathon Starter에 기여해 주셔서 감사합니다. 기여 가이드는 기여 파일에서 찾을 수 있습니다.
Laravel Hackathon Starter에서 보안 취약점을 발견한 경우 Prosper Otemuyiwa([email protected])에게 이메일을 보내주세요. 모든 보안 취약점은 즉시 해결됩니다.
github 저장소에 별표를 표시해 보는 것은 어떨까요? 나는 관심을 갖고 싶습니다! Twitter나 HackerNews에서 이 저장소에 대한 링크를 공유해 보는 것은 어떨까요? 소문을 퍼뜨려라!
트위터에서 저를 팔로우하는 것을 잊지 마세요!
감사해요! 번영하는 오테무이와.
MIT 라이센스(MIT). 자세한 내용은 라이센스 파일을 참조하십시오.