إذا كنت قد حضرت أي هاكاثون في الماضي، فأنت تعرف مقدار الوقت الذي يستغرقه بدء المشروع: قرر ما تريد بناءه، واختر لغة برمجة، واختر إطار ويب، واختر إطار عمل CSS. بعد فترة من الوقت، قد يكون لديك مشروع أولي على GitHub وعندها فقط يمكن لأعضاء الفريق الآخرين البدء في المساهمة. أو ماذا عن القيام بشيء بسيط مثل تسجيل الدخول باستخدام مصادقة Facebook ؟ يمكنك قضاء ساعات في العمل عليه إذا لم تكن على دراية بكيفية عمل OAuth 2.0.
حتى إذا كنت لا تستخدم هذا في hackathon، فمن المؤكد أن 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 Screencast بواسطة 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 باستخدام 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
تتضمن حزمة البداية هذه واجهات برمجة التطبيقات التالية. ستحتاج إلى الحصول على بيانات الاعتماد المناسبة مثل معرف العميل أو سر 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
تشغيل php artisan vendor:publish
اسم | وصف |
---|---|
التكوين /app.php | التكوين لمقدمي الخدمات والواجهات |
التكوين /auth.php | تكوين لإعادة تعيين كلمة المرور |
التكوين /broadcasting.php | التكوين للبث |
التكوين /cache.php | تكوين لإنشاء ذاكرة التخزين المؤقت والتخزين |
التكوين /cloudder.php | التكوين ل cloudinary |
التكوين /compile.php | التكوين للتجميع |
التكوين /database.php | التكوين لبرامج تشغيل قاعدة البيانات |
التكوين / أنظمة الملفات.php | التكوين لأنظمة الملفات المختلفة |
التكوين /github.php | تكوين واجهة برمجة تطبيقات جيثب |
التكوين /mail.php | التكوين للرسائل |
التكوين /queue.php | التكوين لقائمة الانتظار |
التكوين /services.php | التكوين للعديد من الخدمات مثل mailgun وما إلى ذلك. |
التكوين /session.php | التكوين للجلسات |
التكوين /ttwitter.php | ملف تكوين واجهة برمجة تطبيقات تويتر |
التكوين /twilio.php | ملف تكوين Twilio API |
التكوين /view.php | تكوين لموقع طرق العرض وعرض ذاكرة التخزين المؤقت |
وحدات التحكم /AccountController.php | مراقب لإدارة الحساب |
وحدات التحكم /AviaryController.php | وحدة تحكم لوظيفة Aviary API |
وحدات التحكم / ClockworkController.php | وحدة تحكم لوظيفة Clockwork API |
وحدات التحكم /ContactController.php | مراقب لصفحة الاتصال |
وحدات التحكم /Controller.php | BaseController |
وحدات التحكم /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). |
عام / المغلق / main.css | ورقة الأنماط الرئيسية لتطبيقك. |
الموارد/المشاهدات/الحساب / | قوالب لتسجيل الدخول، إعادة تعيين كلمة المرور، الاشتراك، الملف الشخصي . |
المشاهدات/واجهة برمجة التطبيقات / | قوالب لأمثلة API. |
المشاهدات/الجزئيات /alerts.blade.php | إشعارات الخطأ والمعلومات والنجاح. |
المشاهدات/الأجزاء الجزئية /navbar.blade.php | قالب جزئي لشريط التنقل. |
المشاهدات / التخطيطات ** / master.blade.php | القالب الأساسي. |
المشاهدات /apidashboard.blade.php | قالب لوحة معلومات API. |
المشاهدات /contact.blade.php | قالب صفحة الاتصال. |
المشاهدات /welcome.blade.php | قالب الصفحة الرئيسية. |
.travis.yml | التكامل ترافيس CI. |
.env.example | مفاتيح API والرموز المميزة وكلمات المرور وقاعدة البيانات URI. |
الملحن.json | ملف لتحميل كافة حزم PHP. |
package.json | ملف لتحميل جميع وحدات العقدة الضرورية. |
حرفي | ملف لتمكين الأوامر للتشغيل |
طَرد | وصف |
---|---|
اجتماعي | قم بتسجيل الدخول باستخدام Facebook وTwitter وGithub |
مقدمي الخدمات الاجتماعية | تسجيل الدخول باستخدام لينكد إن، إنستغرام |
cloudder | تحميل الصور إلى Cloudinary |
لارافيل جيثب | مكتبة جيثب API |
تصورها | مكتبة Clockwork SMS API. |
النقرس | قم بكشط صفحات الويب باستخدام بناء جملة نمط jQuery. |
إطار لارافيل | إطار عمل الويب PHP |
تغريد | مكتبة تويتر API |
twilio | مكتبة Twilio API |
lob-php | مكتبة Lob API |
lastfm-api-wrapper | مكتبة Lastfm API |
phpunit | مكتبة اختبار PHP |
أسرف في شرب الكحولhttp | مكتبة طلبات HTTP المبسطة |
باستخدام Optic، يمكنك استخدام واجهة برمجة التطبيقات (API) الخاصة بك كالمعتاد، وتوثيق التغييرات في السلوك تلقائيًا. لتمكين هذا، ستحتاج أولاً إلى تنزيل Optic.
npm install -g @useoptic/cli
بمجرد تثبيت Optic، يمكنك البدء في توثيق طلباتك عن طريق تشغيل api start
. سيؤدي تشغيل هذا الأمر إلى إنشاء نسخة وكيل من واجهة برمجة التطبيقات الخاصة بك، وهي متاحة على المضيف المحلي: 4000 - الآن، يمكنك استخدام واجهة برمجة التطبيقات كالمعتاد هنا، وسوف تلاحظ شركة Optic تلقائيًا الاختلافات في السلوك الموثق، مما يسمح لك بإنشاء الوثائق تلقائيًا مع تغير واجهة برمجة التطبيقات الخاصة بك .
لعرض الوثائق الحالية لواجهة برمجة التطبيقات، قم بتشغيل 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 الخاص بك.
يهدف هذا القسم إلى إعطائك شرحًا تفصيليًا حول كيفية عمل وظيفة معينة. ربما كنت مهتمًا فقط بكيفية عمله، أو ربما كنت ضائعًا ومرتبكًا أثناء قراءة الكود، وآمل أن يقدم لك بعض الإرشادات.
تسمح لك رسائل الفلاش بعرض رسالة في نهاية الطلب والوصول إليها عند الطلب التالي والطلب التالي فقط. على سبيل المثال، في حالة محاولة تسجيل دخول فاشلة، ستعرض تنبيهًا يحتوي على بعض رسائل الخطأ، ولكن بمجرد تحديث تلك الصفحة أو زيارة صفحة مختلفة والعودة إلى صفحة تسجيل الدخول، ستختفي رسالة الخطأ هذه. ويتم عرضه مرة واحدة فقط. جميع رسائل الفلاش متاحة في مشاهداتك عبر جلسات 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
داخل دليل التطبيق/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 وفيديو Bluemix.
شكرًا لك على التفكير في المساهمة في Laravel Hackathon Starter. يمكن العثور على دليل المساهمة في ملف المساهمة
إذا اكتشفت ثغرة أمنية في Laravel Hackathon Starter، فيرجى إرسال بريد إلكتروني إلى Prosper Otemuyiwa على [email protected]. سيتم معالجة جميع الثغرات الأمنية على الفور.
لماذا لا تضع نجمة على جيثب الريبو؟ أحب الاهتمام! لماذا لا تشارك رابط هذا المستودع على Twitter أو HackerNews؟ انشر الكلمة!
لا تنسى متابعتي على تويتر!
شكرًا! بروسبر أوتيمويوا.
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.