Wenn Sie in der Vergangenheit an Hackathons teilgenommen haben, wissen Sie, wie viel Zeit es dauert, ein Projekt zu starten: Entscheiden Sie, was Sie erstellen möchten, wählen Sie eine Programmiersprache, ein Web-Framework und ein CSS-Framework aus. Eine Weile später haben Sie möglicherweise ein erstes Projekt auf GitHub und erst dann können andere Teammitglieder mit der Mitarbeit beginnen. Oder wie wäre es mit etwas so Einfachem wie der Anmeldung mit Facebook- Authentifizierung? Sie können Stunden damit verbringen, wenn Sie nicht mit der Funktionsweise von OAuth 2.0 vertraut sind.
Auch wenn Sie dies nicht für einen Hackathon verwenden, spart Laravel Hackathon Starter jedem Entwickler Stunden oder sogar Tage Entwicklungszeit und kann als Lernleitfaden für Webentwickler dienen.
Laravel ist ein Webanwendungs-Framework mit ausdrucksstarker, eleganter Syntax. Laravel versucht, die Entwicklung zu vereinfachen, indem es allgemeine Aufgaben vereinfacht, die in den meisten Webprojekten verwendet werden, wie Authentifizierung, Routing, Sitzungen, Warteschlangen und Caching.
Laravel Hackathon Starter ist eine Standardanwendung, die mit Laravel 5.2 entwickelt wurde, um Ihnen bei Hackathons die Nase vorn zu halten.
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
(wird für die automatische Dokumentation benötigt)Hinweis: Wenn Sie neu bei Laravel sind, empfehle ich Ihnen, sich den Screencast „Laravel From Scratch“ von Jeffery Way anzusehen, der Laravel 5 von Grund auf lehrt. Alternativ finden Sie hier ein weiteres großartiges Tutorial zum Erstellen einer Projektmanagement-App für Anfänger/fortgeschrittene Entwickler – So erstellen Sie eine Projektmanagement-App in 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
Laden Sie zunächst den Laravel Hackathon Starter Pack Installer mit Composer herunter:
composer global require "unicodeveloper/hackathon-installer"
Stellen Sie sicher, dass Sie das Verzeichnis ~/.composer/vendor/bin
(oder das entsprechende Verzeichnis für Ihr Betriebssystem) in Ihrem PATH ablegen, damit die ausführbare larathon
Datei von Ihrem System gefunden werden kann.
Nach der Installation erstellt der Befehl larathon new
eine neue Laravel Hackathon Starter Pack-Installation in dem von Ihnen angegebenen Verzeichnis. Beispielsweise erstellt larathon new mvp
ein Verzeichnis mit dem Namen mvp
das eine neue Laravel Hackathon Starter Pack-Installation mit allen bereits installierten Abhängigkeiten enthält. Diese Installationsmethode ist viel schneller als die Installation über Composer:
larathon new mvp
Alternativ können Sie das Laravel Hackathon Starter Pack auch installieren, indem Sie den Composer-Befehl „ create-project
in Ihrem Terminal ausführen:
composer create-project --prefer-dist unicodeveloper/laravel-hackathon-starter hotel
Dieses Starterpaket enthält die folgenden APIs. Sie müssen entsprechende Anmeldeinformationen wie Client-ID, zClient-Geheimnis, API-Schlüssel oder Benutzername und Passwort erhalten, indem Sie bei jedem Anbieter neue Anmeldeinformationen generieren.
.env
ein Hinweis: Wenn Sie zur Bereitstellung in der Produktion bereit sind, vergessen Sie nicht, Ihre neue URL zu „Autorisierte Javascript-Ursprünge“ und „Autorisierte Weiterleitungs-URI“ hinzuzufügen, z. B. http://my-awesome-app.herokuapp.com
und http://my-awesome-app.herokuapp.com/auth/google/callback
bzw. Das Gleiche gilt auch für andere Anbieter.
.env
einhttp://localhost:3000
unter Site-URL ein Hinweis: Nach einer erfolgreichen Anmeldung bei Facebook wird ein Benutzer zurück zur Startseite mit angehängtem Hash #_=_
in der URL weitergeleitet. Es ist kein Fehler. In dieser Diskussion zum Stapelüberlauf erfahren Sie, wie Sie damit umgehen können.
.env
Datei ein.env
Datei einr_basicprofile
.env
Datei ein.env
Datei ein.env
Datei ein.env
Datei ein.env
Datei ein.env
Datei ein.env
Datei ein.env
Datei ein.env
Datei ein.env
Datei ein Führen Sie php artisan vendor:publish
Name | Beschreibung |
---|---|
config /app.php | Konfiguration für Dienstleister und Fassaden |
config /auth.php | Konfiguration für Passwort-Resets |
config /broadcasting.php | Konfiguration für Rundfunk |
config /cache.php | Konfiguration für Cache-Generierung und -Speicherung |
config /cloudder.php | Konfiguration für Cloudinary |
config /compile.php | Konfiguration für die Kompilierung |
config /database.php | Konfiguration für Datenbanktreiber |
config /filesystems.php | Konfiguration für verschiedene Dateisysteme |
config /github.php | Konfiguration für die Github-API |
config /mail.php | Konfiguration für Mails |
config /queue.php | Konfiguration für Warteschlange |
config /services.php | Konfiguration für mehrere Dienste wie Mailgun usw. |
config /session.php | Konfiguration für Sitzungen |
config /ttwitter.php | Twitter-API-Konfigurationsdatei |
config /twilio.php | Twilio-API-Konfigurationsdatei |
config /view.php | Konfiguration für den Speicherort von Ansichten und den Ansichtscache |
Controller /AccountController.php | Controller für die Kontoverwaltung |
Controller /AviaryController.php | Controller für die Aviary-API-Funktionalität |
Controller /ClockworkController.php | Controller für die Clockwork-API-Funktionalität |
Controller /ContactController.php | Seite „Controller für Kontakt“. |
Controller /Controller.php | BaseController |
Controller /GithubController.php | Controller für die Github-API-Funktionalität |
Controller /LastFmController.php | Controller für die LastFM-API-Funktionalität |
Controller /LobController.php | Controller für Lob-API-Funktionalität. |
Controller /NytController.php | Controller für die API-Funktionalität der New York Times |
Controller /OauthController.php | Controller für O-Authentifizierung |
Controller /PaypalController.php | Controller für die Paypal-API-Funktionalität |
Controller /SteamController.php | Controller für Stream-API-Funktionalität |
Controller /StripeController.php | Controller für die Stripe-API-Funktionalität |
Controller /TwilioController.php | Controller für die Twilio-API-Funktionalität |
Controller /TwitterController.php | Controller für die Twitter-API-Funktionalität |
Controller /WebScrapingController.php | Controller für Web Scraping. |
Controller /YahooController.php | Controller für die Yahoo-API-Funktionalität |
Controller /user.js | Controller für die Benutzerkontenverwaltung. |
models /User.php | Modell für Benutzer. |
öffentlich / | Statische Assets (Schriftarten, CSS, JS, IMG). |
public / css /main.css | Haupt-Stylesheet für Ihre App. |
Ressourcen/Ansichten/Konto / | Vorlagen für Login, Passwort-Reset, Anmeldung, Profil . |
Ansichten/API / | Vorlagen für API-Beispiele. |
Ansichten/Partials /alerts.blade.php | Fehler-, Info- und Erfolgs-Flash-Benachrichtigungen. |
Ansichten/Partials /navbar.blade.php | Teilvorlage für die Navigationsleiste. |
Ansichten /layouts**/master.blade.php | Basisvorlage. |
Ansichten /apidashboard.blade.php | API-Dashboard-Vorlage. |
Ansichten /contact.blade.php | Kontaktseitenvorlage. |
Aufrufe /welcome.blade.php | Homepage-Vorlage. |
.travis.yml | Travis CI-Integration. |
.env.example | Ihre API-Schlüssel, Token, Passwörter und Datenbank-URI. |
Composer.json | Datei zum Laden aller PHP-Pakete. |
package.json | Datei zum Laden aller notwendigen Knotenmodule. |
Handwerker | Datei zum Aktivieren der Ausführung von Befehlen |
Paket | Beschreibung |
---|---|
Prominenter | Melden Sie sich mit Facebook, Twitter und Github an |
Socialite-Anbieter | Melden Sie sich mit LinkedIn und Instagram an |
cloudder | Laden Sie Bilder auf Cloudinary hoch |
Laravel Github | Github-API-Bibliothek |
Uhrwerk | Clockwork SMS API-Bibliothek. |
goutte | Scrapen Sie Webseiten mit einer Syntax im jQuery-Stil. |
Laravel-Framework | PHP-Webframework |
Twitter-API-Bibliothek | |
Twilio | Twilio-API-Bibliothek |
lob-php | Lob-API-Bibliothek |
lastfm-api-wrapper | Lastfm-API-Bibliothek |
phpunit | PHP-Testbibliothek |
guzzlehttp | Vereinfachte HTTP-Anfragebibliothek |
Mit Optic können Sie Ihre API wie gewohnt nutzen und Verhaltensänderungen automatisch dokumentieren. Um dies zu aktivieren, müssen Sie zunächst Optic herunterladen.
npm install -g @useoptic/cli
Sobald Sie Optic installiert haben, können Sie mit der Dokumentation Ihrer Anfragen beginnen, indem api start
ausführen. Wenn Sie diesen Befehl ausführen, wird eine Proxy-Version Ihrer API erstellt, die unter localhost:4000 verfügbar ist. Jetzt können Sie die API hier wie gewohnt verwenden, und Optic erkennt automatisch Unterschiede im dokumentierten Verhalten, sodass Sie automatisch eine Dokumentation erstellen können, wenn sich Ihre API ändert .
Um die aktuelle Dokumentation der API anzuzeigen, führen Sie api spec
im Stammverzeichnis aus.
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
Weitere Informationen zu Optic finden Sie in den Dokumenten.
Token Mismatch Exception
?Sie müssen Ihrem Formular das folgende versteckte Eingabeelement hinzufügen. Dies wurde im Rahmen des CSRF-Schutzes zur vorhandenen Codebasis hinzugefügt.
{!! csrf_field() !!}
Möglicherweise haben Sie den App-Schlüssel nicht generiert, also führen Sie php artisan key:generate
aus. Möglicherweise haben Sie Ihre Anmeldeinformationen nicht in Ihre .env-Datei eingegeben.
Dieser Abschnitt soll Ihnen eine ausführliche Erläuterung der Funktionsweise einer bestimmten Funktionalität geben. Vielleicht sind Sie einfach nur neugierig, wie es funktioniert, oder vielleicht sind Sie beim Lesen des Codes verloren und verwirrt. Ich hoffe, er bietet Ihnen eine Orientierung.
Mit Flash-Nachrichten können Sie am Ende der Anfrage eine Nachricht anzeigen und bei der nächsten Anfrage und nur bei der nächsten Anfrage darauf zugreifen. Beispielsweise würden Sie bei einem fehlgeschlagenen Anmeldeversuch eine Warnmeldung mit einer Fehlermeldung anzeigen, aber sobald Sie diese Seite aktualisieren oder eine andere Seite besuchen und zur Anmeldeseite zurückkehren, ist diese Fehlermeldung verschwunden. Es wird nur einmal angezeigt. Alle Flash-Nachrichten sind in Ihren Ansichten über Laravel-Sitzungen verfügbar.
Richtiger wäre es zu sagen: „Wie erstelle ich eine neue Route?“. Die Hauptdatei routes.php
enthält alle Routen. Jeder Route ist eine Rückruffunktion zugeordnet. Manchmal werden drei oder mehr Argumente für Routen angezeigt. In solchen Fällen ist das erste Argument immer noch eine URL-Zeichenfolge, während die mittleren Argumente sogenannte Middleware sind. Stellen Sie sich Middleware als eine Tür vor. Wenn diese Tür Sie daran hindert, weiterzuleiten, gelangen Sie nicht zu Ihrer Rückruffunktion. Ein solches Beispiel ist eine Route, die eine Authentifizierung erfordert.
Route:: get ( ' /account ' , ' UserController@getAccount ' );
Es geht immer von links nach rechts. Ein Benutzer besucht die Seite /account
. Dann prüft auth
-Middleware, ob Sie authentifiziert sind:
Route:: get ( ' /account ' , [
' uses ' => ' AccountController@getAccountPage ' ,
' as ' => ' account.dashboard ' ,
' middleware ' => [ ' auth ' ]
]);
Wenn Sie authentifiziert sind, lassen Sie diesen Besucher durch Ihre „Tür“ passieren, indem Sie return $next($request);
in der Authentifizierungs-Middleware und wenn Sie authentifiziert sind, werden Sie zur Seite „Kontoverwaltung“ weitergeleitet, andernfalls werden Sie zur Seite „Anmelden“ weitergeleitet.
Hier ist ein typischer Arbeitsablauf zum Hinzufügen neuer Routen zu Ihrer Anwendung. Nehmen wir an, wir erstellen eine Seite, die alle Bücher aus der Datenbank auflistet.
Schritt 1. Beginnen Sie mit der Definition einer Route.
Route:: get ( ' /books ' , ' BookController@getBooks ' );
Schritt 2. Erstellen Sie ein neues Modell Book.php
im App- Verzeichnis. Sie können einfach php artisan make:model Book
ausführen
namespace App ;
class Book
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $ fillable = [
' name ' , ' isbn ' ,
];
}
Schritt 3. Erstellen Sie eine Migrationsdatei wie folgt: 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 ' );
}
}
Schritt 4: Erstellen Sie eine neue Controller-Datei mit dem Namen BookController
im Verzeichnis app/Http/Controllers . Sie können einfach php artisan make:controller BookController
ausführen
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 );
}
}
Schritt 5. Erstellen Sie die Vorlage 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
Das ist es!
Sobald Sie bereit sind, Ihre App bereitzustellen, müssen Sie ein Konto bei einer Cloud-Plattform erstellen, um sie zu hosten. Dies sind nicht die einzigen Optionen, aber sie sind meine Top-Tipps. Meiner Erfahrung nach ist Heroku der einfachste Einstieg, Bereitstellung und Unterstützung benutzerdefinierter Domänen über kostenlose Konten.
heroku login
aus und geben Sie Ihre Heroku-Anmeldeinformationen einheroku create
ausweb: vendor/bin/heroku-php-nginx public
oder web: vendor/bin/heroku-php-apache2 public
enthalten, wenn Sie lieber Nginx verwenden möchten.heroku addons:add heroku-postgresql:dev
um von Ihrem Terminal aus eine Postgres-Datenbank zu Ihrer Heroku-App hinzuzufügengit push heroku master
. Erledigt!heroku run php artisan migrate
Hinweis: Um Heroku-Add-ons zu installieren, muss Ihr Konto verifiziert werden.
git push -f openshift master
ausführen-f
(force) übergeben, da OpenShift beim Erstellen einer neuen Node.js-App einen Dummy-Server mit der Begrüßungsseite erstellt. Wenn Sie das Flag -f
übergeben, wird alles mit Ihrem Hackathon Starter -Projekt-Repository überschrieben. Führen Sie git pull
nicht aus, da dies zu unnötigen Zusammenführungskonflikten führt.git remote add azure [Azure Git URL]
aus.git push azure master
ausHinweis: Alternative Anweisungen, einschließlich der Einrichtung des Projekts mit einer DevOps-Pipeline, sind unter http://ibm.biz/hackstart verfügbar. Eine längere Version dieser Anweisungen mit Screenshots ist unter http://ibm.biz/hackstart2 verfügbar. Schauen Sie sich auch unbedingt das Video „Starten Sie Ihre Hackathon-Bemühungen mit DevOps Services und Bluemix“ an.
Vielen Dank, dass Sie darüber nachdenken, zum Laravel Hackathon Starter beizutragen. Den Beitragsleitfaden finden Sie in der Beitragsdatei
Wenn Sie eine Sicherheitslücke im Laravel Hackathon Starter entdecken, senden Sie bitte eine E-Mail an Prosper Otemuyiwa unter [email protected]. Alle Sicherheitslücken werden umgehend behoben.
Warum nicht das Github-Repo starten? Ich würde mich über die Aufmerksamkeit freuen! Warum teilen Sie den Link zu diesem Repository nicht auf Twitter oder HackerNews? Verbreiten Sie es weiter!
Vergessen Sie nicht, mir auf Twitter zu folgen!
Danke! Prosper Otemuyiwa.
Die MIT-Lizenz (MIT). Weitere Informationen finden Sie in der Lizenzdatei.