Если вы раньше посещали хакатоны, то знаете, сколько времени нужно, чтобы запустить проект: решить, что создавать, выбрать язык программирования, выбрать веб-фреймворк, выбрать 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 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
Сначала загрузите установщик стартового пакета Laravel Hackathon с помощью Composer:
composer global require "unicodeveloper/hackathon-installer"
Обязательно поместите каталог ~/.composer/vendor/bin
(или эквивалентный каталог для вашей ОС) в ваш PATH, чтобы исполняемый файл larathon
мог быть найден в вашей системе.
После установки команда larathon new
создаст новую установку стартового пакета Laravel Hackathon в указанном вами каталоге. Например, larathon new mvp
создаст каталог с именем mvp
, содержащий новую установку стартового пакета Laravel Hackathon со всеми уже установленными зависимостями. Этот метод установки намного быстрее, чем установка через Composer:
larathon new mvp
Кроме того, вы также можете установить стартовый пакет Laravel Hackathon, введя команду 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-адресе. Это не ошибка. См. обсуждение переполнения стека, чтобы узнать, как с этим справиться.
.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 | Конфигурация для Cloudinary |
конфигурация /compile.php | Конфигурация для компиляции |
конфигурация /database.php | Конфигурация драйверов базы данных |
конфигурация /filesystems.php | Конфигурация для разных файловых систем |
конфигурация /github.php | Конфигурация API GitHub |
конфигурация /mail.php | Конфигурация для почты |
конфигурация /queue.php | Конфигурация для очереди |
конфигурация /services.php | Конфигурация для нескольких сервисов, таких как mailgun и т. д. |
конфигурация /session.php | Конфигурация для сеансов |
конфигурация /ttwitter.php | Конфигурационный файл Twitter API |
конфигурация /twilio.php | Файл конфигурации API Twilio |
конфигурация /view.php | Конфигурация расположения представлений и кэша представлений |
контроллеры /AccountController.php | Контроллер для управления счетами |
контроллеры /AviaryController.php | Контроллер для функциональности Aviary API |
контроллеры /ClockworkController.php | Контроллер для функций Clockwork API |
контроллеры /ContactController.php | Контроллер для страницы контактов |
контроллеры /Controller.php | Базовыйконтроллер |
контроллеры /GithubController.php | Контроллер для функций API Github |
контроллеры /LastFmController.php | Контроллер для функциональности LastFM API |
контроллеры /LobController.php | Контроллер для функциональности Lob API. |
контроллеры /NytController.php | Контроллер для функций API New York Times |
контроллеры /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 | Частичный шаблон навигационной панели. |
просмотры /макеты**/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 |
Ларавел на GitHub | API-библиотека Github |
часовой механизм | Библиотека Clockwork SMS API. |
подагра | Парсинг веб-страниц с использованием синтаксиса в стиле jQuery. |
фреймворк Laravel | Веб-фреймворк PHP |
Твиттер | API-библиотека Твиттера |
твилио | Библиотека API Twilio |
лоб-php | Лоб API-библиотека |
LastFM-API-обертка | Библиотека API Lastfm |
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
при отправке формы?Вам необходимо добавить в форму следующий скрытый элемент ввода. Это было добавлено в существующую кодовую базу как часть защиты 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
если вы предпочитаете использовать nginx.heroku addons:add heroku-postgresql:dev
, чтобы добавить базу данных Postgres в приложение Heroku со своего терминала.git push heroku master
. Сделанный!heroku run php artisan migrate
Примечание. Чтобы установить дополнения Heroku, ваша учетная запись должна быть подтверждена.
git push -f openshift master
-f
(force), поскольку 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. Также обязательно посмотрите видео «Начните свой хакатон с помощью DevOps Services и Bluemix».
Спасибо, что решили внести свой вклад в Laravel Hackathon Starter. Руководство по вкладу можно найти в файле вклада.
Если вы обнаружите уязвимость безопасности в Laravel Hackathon Starter, отправьте электронное письмо Просперу Отемуиве по адресу [email protected]. Все уязвимости безопасности будут оперативно устранены.
Почему бы не пометить репозиторий GitHub? Мне бы хотелось внимания! Почему бы не поделиться ссылкой на этот репозиторий в Twitter или HackerNews? Распространите информацию!
Не забудьте подписаться на меня в твиттере!
Спасибо! Проспер Отемуива.
Лицензия MIT (MIT). Пожалуйста, смотрите файл лицензии для получения дополнительной информации.