如果您过去参加过任何黑客马拉松,那么您就会知道启动一个项目需要多少时间:决定构建什么、选择编程语言、选择 Web 框架、选择 CSS 框架。一段时间后,您可能在 GitHub 上有了一个初始项目,然后其他团队成员才能开始贡献。或者做一些像使用 Facebook 身份验证登录这样简单的事情怎么样?如果您不熟悉 OAuth 2.0 的工作原理,您可以花几个小时来了解它。
即使您不将其用于黑客马拉松,Laravel Hackathon Starter 也一定会节省开发人员数小时甚至数天的开发时间,并且可以作为 Web 开发人员的学习指南。
Laravel 是一个具有表现力、优雅语法的 Web 应用程序框架。 Laravel 试图通过简化大多数 Web 项目中使用的常见任务(例如身份验证、路由、会话、队列和缓存)来消除开发的痛苦。
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 新手,我建议您观看 Jeffery Way 制作的 Laravel From Scratch 截屏视频,该视频从头开始教授 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
首先,使用 Composer 下载 Laravel Hackathon Starter Pack 安装程序:
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
或者,您也可以通过在终端中发出 Composer create-project
命令来安装 Laravel Hackathon Starter Pack:
composer create-project --prefer-dist unicodeveloper/laravel-hackathon-starter hotel
该入门包包含以下 API。您将需要通过每个提供商获取适当的凭据,例如客户端 ID、zClient 密钥、API 密钥或用户名和密码,并生成新的凭据。
.env
中注意:当您准备部署到生产环境时,请不要忘记将新网址添加到Authorized Javascript origins和Authorized redirect URI ,例如http://my-awesome-app.herokuapp.com
和http://my-awesome-app.herokuapp.com/auth/google/callback
分别为http://my-awesome-app.herokuapp.com/auth/google/callback
。其他提供商也是如此。
.env
中http://localhost:3000
注意:成功登录 Facebook 后,用户将被重定向回主页,并在 URL 中附加哈希#_=_
。这不是一个错误。有关处理方法,请参阅 Stack Overflow 讨论。
.env
文件中.env
文件中r_basicprofile
.env
文件中.env
文件中.env
文件中.env
文件中.env
文件中.env
文件中.env
文件中.env
文件中.env
文件中.env
文件中运行php artisan vendor:publish
姓名 | 描述 |
---|---|
配置/app.php | 服务提供者和外观的配置 |
配置/auth.php | 密码重置配置 |
配置/广播.php | 广播配置 |
配置/缓存.php | 缓存生成和存储的配置 |
配置/cloudder.php | cloudinary的配置 |
配置/编译.php | 编译配置 |
配置/database.php | 数据库驱动程序的配置 |
配置/文件系统.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 | 纽约时报 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 | 导航栏部分模板。 |
视图/layouts**/master.blade.php | 基础模板。 |
视图/apidashboard.blade.php | API 仪表板模板。 |
视图/contact.blade.php | 联系页面模板。 |
视图/welcome.blade.php | 主页模板。 |
.travis.yml | Travis CI 集成。 |
.env.example | 您的 API 密钥、令牌、密码和数据库 URI。 |
作曲家.json | 用于加载所有 php 包的文件。 |
包.json | 用于加载所有必需的节点模块的文件。 |
工匠 | 用于启用命令运行的文件 |
包裹 | 描述 |
---|---|
社会名流 | 使用 Facebook、Twitter 和 Github 登录 |
社交名流提供者 | 使用 LinkedIn、Instagram 登录 |
云德 | 将图像上传到 Cloudinary |
Laravel github | Github API 库 |
发条 | Clockwork短信API库。 |
古特 | 使用 jQuery 风格的语法抓取网页。 |
Laravel 框架 | 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
开始记录您的请求。运行此命令将创建 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
有关光学的更多信息,请查看文档。
Token Mismatch Exception
?您需要将以下隐藏输入元素添加到您的表单中。这已作为 CSRF 保护的一部分添加到现有代码库中。
{!! csrf_field() !!}
您可能尚未生成应用程序密钥,因此请运行php artisan key:generate
。您可能尚未将凭据放入 .env 文件中。
本节旨在为您详细解释特定功能的工作原理。也许你只是好奇它是如何工作的,或者也许你在阅读代码时迷失和困惑,我希望它能为你提供一些指导。
Flash 消息允许您在请求末尾显示一条消息,并在下一个请求且仅在下一个请求时访问它。例如,在登录尝试失败时,您将显示带有一些错误消息的警报,但是一旦您刷新该页面或访问不同的页面并返回到登录页面,该错误消息就会消失。它只显示一次。所有 Flash 消息都可以通过 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.在app目录中创建一个新模型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
或web: vendor/bin/heroku-php-apache2 public
。heroku addons:add heroku-postgresql:dev
从终端将 Postgres 数据库添加到 Heroku 应用程序git push heroku master
。完毕!heroku run php artisan migrate
一样注意:要安装 Heroku 附加组件,您的帐户必须经过验证。
git push -f openshift master
将代码推送到 OpenShift-f
(强制)标志,因为当您创建新的 Node.js 应用程序时,OpenShift 会创建一个带有欢迎页面的虚拟服务器。传递-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 Services 和 Bluemix 快速启动您的黑客马拉松视频。
感谢您考虑为 Laravel Hackathon Starter 做出贡献。贡献指南可以在贡献文件中找到
如果您发现 Laravel Hackathon Starter 中存在安全漏洞,请发送电子邮件至 Prosper Otemuyiwa:[email protected]。所有安全漏洞都将得到及时解决。
为什么不给 github 仓库加注星标呢?我希望得到关注!为什么不在 Twitter 或 HackerNews 上分享此存储库的链接?传播这个词!
不要忘记在推特上关注我!
谢谢!繁荣奥特穆伊瓦。
麻省理工学院许可证 (MIT)。请参阅许可证文件以获取更多信息。