نوشین اکبری
نوشین اکبری
خواندن ۳ دقیقه·۲ سال پیش

آموزش ساخت فروشگاه با لاراول ( پروژه محور )

از ده سال گذشته اینترنت به قدر خیلی زیاد و با سرعت بالایی پیشرفت کرده و یکی از مهم ترین کاربردهای اینترنت تجارت الکترونیک ( خرید فروش آنلاین ) است.

فناوری در راس این پیشرفت هاست و توسعه دهندگان درسرتاسر جهان با استفاده از زبان های برنامه نویسی همچون PHP JAVA, Python, MEAN, Ruby On Rails و ... سعی در آسانتر کردن و بهتر کردن تجارت آنلاین هستند.

آموزش ساخت فروشگاه اینترنتی
آموزش ساخت فروشگاه اینترنتی

محبوب ترین ابزاری که برای ساخت فروشگاه ها استفاده میشود ، از الگوی mvc استفاده میکند و متن باز هست فریمورکی به اسم لاراول ( Laravel ) که در سال ۲۰۱۱ توسط تیلور اتول ساخته شده است.

فریمورک لاراول با هدف آسان سازی توسعه ی وب و ایجاد ابزارهایی برای کارهای تکراری در توسعه وب مانند routing authentication, sessions و caching به محبوبیت خیلی زیادی در بین توسعه دهندگان وب رسید.

در این آموزش من قصد دارم به شما یاد بدم که چطور یک فروشگاه را با استفاده از فریمورک لاراول بالا بیاورید و سپس از فریمورک های جاوااسکریپت مانند Vue.js, React, Node.js, Angular JS و Backbone.js برای ظاهر آن استفاده کنید.


پیش نیاز ها برای شروع

  • محیط برنامه نویسی خود را آماده کنید
  • لاراول را روی سیستم خود نصب کنید
  • با زبان PHP باید آشنا باشید
  • با دستورات ترمینال یا command line باید آشنا باشید
  • با زبان Javascript و فریمورک vue.js آشنا باشید


چه چیزایی برای ساخت فروشگاه با لاراول میسازیم ؟ ( بصورت خلاصه )

  • یک صفحه ی خانگی که محصولات را لیست میکند
  • یک صفحه ی جزئیات محصول خاص
  • یک صفحه ی سبد خرید که شامل اطلاعاتی مثل آدرس و اطلاعات پرداخت باشد
  • یک پنل مدیریت برای فروشنده که شامل افزودن / ویرایش و حذف محصولات و کنترل تعداد فروش باشد
  • یک پنل مدیریتی برای مشتری باشد تا محصولات خرید شده یا پرداختی ها را بررسی کند


تعریف کردن نقش کاربران در فروشگاه اینترنتی با لاراول

باید سطح دسترسی کاربران را مشخص کنیم در فروشگاه لاراولی ما دو نوع کاربر داریم که به ترتیب زیر هستند :

  • ادمین : صاحب فروشگاه
  • خریدار : کاربرانی که محصولات میخرند


جزئیات فروشگاه اینترنتی با لاراول

ما باید کامپوننت های مختلف فروشگاه اینترنتی خود را مشخص کنیم . علاوه بر کاربران که همان مشتریان سیستم فروشگاهی هستند ما باید محصولات را هم ذخیره کنیم همچنین بخشی هم برای ذخیره سفارشات باشد.

ما میتوانیم کامپوننت های اولیه فروشگاه خود را به شکل زیر بسازیم ( ابتدا نام کامپوننت یا موجودیت را میبینید سپس با علامت فلش فیلد های لازم را مشخص کردیم ) :


User > username, password, role

Product > name, description, price, quantity, image

Order > product, user, stock, delivery_status, address


ساختن کنترلر ( Controller ) های مورد نیاز

فریمورک لاراول به شما این امکان را میدهد که برای هر عملیات یا هر مسیری که در route تعریف میکنید یک کنترلر داشته باشید.

برای انجام هر عمل خاصی در اپلیکیشن لاراولی میتوانید یک متود در کنترلر مد نظر ایجاد کنید. در زیر عملیات های مختلف با نام کنترلر آنها را میبینید ‌:

کنترلرهای لازم برای ساخت فروشگاه با لاراول
کنترلرهای لازم برای ساخت فروشگاه با لاراول

آموزش نصب یک لاراول جدید

برای ساختن یک اپلیکیشن جدید با فریمورک لاراول کد زیر را در ترمینال یا cmd خود اجرا کنید:

$ laravel new shop

البته شما میتوانید از دستور زیر نیز برای نصب یک نسخه ی جدید لاراول استفاده کنید

composer create-project laravel/laravel shop

به درون پوشه shop بروید اینجا مسیر اصلی پروژه ی لاراولی شما است و برای اجرای دستورات ترمینالی باید درون این پوشه باشید.


ساخت پایگاه داده ی فروشگاه

در این پروژه ما از MySQL برای ساختن دیتابیس ( پایگاه داده ) فروشگاه خودمان استفاده خواهیم کرد. یک دیتابیس جدید بسازید و سپس فایل .env را باز کنید که در ریشه ی پروژه ی لاراول شما است. درون این فایل موارد دیتابیس را برای اتصال تنظیم کنید :

DB_CONNECTION=mysql DB_DATABASE=homestead DB_USERNAME=username DB_PASSWORD=password

دستور زیر برای اجرای مایگریشن ( ساختن جدول های مورد نیاز ) و همچنین seed کردن داده هاست :

$ php artisan migrate --seed

ساخت مدل برای فروشگاه

مدل ها در الگوی mvc نقش واسط بین اپلیکیشن و پایگاه داده را بازی میکنند یعنی هر اتفاقی که به پایگاه داده مربوط شود باید در سمت مدل ها نوشته شود.

مدل ها ( Model ) در لاراول به شما امکان کار با داده های درون جداول پایگاه داده را میدهد.

برای ساختن مدل جدید برای محصولات و سفارشات دستورات زیر را اجرا کنید :

php artisan make:model Product

و

php artisan make:model Order

مدل ها در مسیر app/Models ساخته میشوند. حالا فایل app/Models/User.php را باز کنید و با کد زیر جایگزین کنید :

<?php namespace App; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; class User extends Authenticatable { use Notifiable, SoftDeletes; protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ]; public function orders() { return $this->hasMany(Order::class); } }

در مدل های فریمورک لاراول SoftDelete قرار داده شده تا زمانی که یک عنصر را پاکسازی میکنیم فقط در ظاهر نمایش داده نشود و در واقع از دیتابیس پاکسازی نمیشود ، پس زمانی که یک بصورت اشتباهی یک رکورد را پاکسازی کردیم میتوانیم انرا بازیابی کنیم.

آرایه ای به اسم $fillable وجود دارد که باید شامل تمام فیلدهایی باشد که قصد داریم آنها را پر کنیم.

حالا فایل app/Models/Product.php را باز کنید و محتویاتش را به شکل زیر تغییر دهید :‌

<?php namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Product extends Model { use SoftDeletes; protected $fillable = [ 'name', 'price', 'quantity', 'description', 'image' ]; public function orders(){ return $this->hasMany(Order::class); } }

این مدل نیز مشابه مدل User هست با این تفاوت که یک رابطه ( relation ) با order ها دارد.

حالا فایل app/Models/Order.php را باز کنید و به شکل زیر تغییر دهید :‌

<?php
namespace App; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Order extends Model { use SoftDeletes; protected $fillable = [ 'product_id', 'user_id', 'quantity', 'address' ]; public function user() { return $this->belongsTo(User::class, 'user_id'); } public function product() { return $this->belongsTo(Product::class, 'product_id'); } }

این مدل نیز دقیقا مشابه مدل های دیگر است با این تفاوت که رابطه ی جدایی داخلش هست و رابطه نشان میدهد که سفارش متعلق به کدام یوزر هست .


تعریف کردن و ساختن مایگریشن ها

مایگریشن ها مثل یک ورژن کنترلر برای دیتابیس شما هستند . آنها اجازه ی ساخت و مدیریت جدول و فیلدهای درون جدول را به برنامه نویس میدهند.

اگر بصورت تیمی کار کنید به راحتی میتوانید در قابل یک فایل تمامی کارهایی که برای ساخت و مدیریت خود جدول و سطر و ستون های آن انجام دادید را به اشتراک بگذارید.

برای ساختن یک مایگریشن جدید از دستور زیر استفاده کنید :

php artisan make:migration create_users_table

با اجرای کد بالا یک فایل php در مسیر database/migrations ساخته میشود که همنام با نامی است که موقع ساختن مایگریشن وارد کردیم. برای مثال بالا فایلی باید با نام create_users_table ساخته شود. باز کنید و محتویاتش را به شکل زیر تغییر دهید :‌

<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateUsersTable extends Migration { public function up() { Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->boolean('is_admin')->default(false); $table->string('password'); $table->rememberToken(); $table->timestamps(); $table->softDeletes(); }); } public function down() { Schema::dropIfExists('users'); } }

در اینجا ما ستون های یک جدول را با ویژگیهای آن ساختیم.

سپس مایگریشن create_products_table را باز کنید و کد زیر را درونش بنویسید :

<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateProductsTable extends Migration { public function up() { Schema::create('products', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('description'); $table->unsignedInteger('quantity')->default(0); $table->double('price'); $table->string('image'); $table->timestamps(); $table->softDeletes(); }); } public function down() { Schema::dropIfExists('products'); } }

در نهایت مایگریشن جدیدی نیاز دارید که اگر وجود ندارد بسازید نام آن create_orders_table است و محتویاتش باید به شکل زیر باشد :

<?php use Illuminate\Support\Facades\Schema; use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Migrations\Migration; class CreateOrdersTable extends Migration { public function up() { Schema::create('orders', function (Blueprint $table) { $table->increments('id'); $table->unsignedInteger('product_id'); $table->unsignedInteger('user_id'); $table->unsignedInteger('quantity')->default(1); $table->string('address')->nullable(); $table->boolean('is_delivered')->default(false); $table->timestamps(); $table->softDeletes(); }); } public function down() { Schema::dropIfExists('orders'); } }


ساخت Seeder ها برای وارد کردن اطلاعات پیش نمایش به دیتابیس

لاراول از کلاس seed برای وارد کردن اطلاعات تستی در دیتابیس جهت پیش نمایش استفاده میکند . این کار ساختن یک فروشگاه با لاراول را ساده تر میکند چون اطلاعات تستی داریم.

در اینجا برای یوزر ها و محصولات بصورت تستی داده هایی میسازیم.

خب برای ساختن یک seeder جدید دستور زیر را استفاده کنید :

php artisan make:seed UsersTableSeeder

فایل جدیدی در مسیر database/seeds درست میشود که نامش UserTableSeeder.php هست آنرا باز کنید و محتویاتش را به شکل زیر تغییر دهید :

<?php use App\User; use Illuminate\Database\Seeder; class UsersTableSeeder extends Seeder { public function run() { $user = new User; $user->name = &quotAdmin&quot $user->email = &quotadmin@bagisto.com&quot $user->password = bcrypt('bagisto'); $user->is_admin = true; $user->save(); } }

کلاس seeder بالا یک یوزر ادمین در دیتابیس میسازد.

با دستور زیر یک seeder جدید برای محصولات بسازید :

php artisan make:seed ProductsTableSeeder

حالا فایل جدیدی که در مسیر database/seeds/ProductTableSeeder.php ساخته شده را باز کنید و محتویاتش را با کدهای زیر عوض کنید :

<?php use Illuminate\Database\Seeder; class ProductsTableSeeder extends Seeder { public function run() { $products = [ [ 'name' => &quotRed & Navy Checked Slim Formal Shirt&quot, 'description' => 'Red and navy checked formal shirt, has a button-down collar, a full button placket, long sleeves, a curved hemline.', 'quantity' => 21, 'price' => 200.10, 'image' => 'https://assets.myntassets.com/h_1440,q_100,w_1080/v1/assets/images/1038959/2015/1 /7/11449479796511-INVICTUS-Red--Navy-Checked-Slim-Formal-Shirt-4621449479796242 3.jpg', 'created_at' => new DateTime, 'updated_at' => null, ], [ 'name' => &quotMen Red Classic Slim Fit Solid Formal Shirt&quot, 'description' => 'Red solid formal shirt, has a slim collar, button placket, 1 pocket, long sleeves, curved hem', 'quantity' => 400, 'price' => 1600.21, 'image' => 'https://assets.myntassets.com/h_1440,q_100,w_1080/v1/assets/images/3117516/2018/3 10/11520666535008-JAINISH-Men-Red-Classic-Slim-Fit-Solid-Formal-Shirt 2801520666534871-3.jpg', 'created_at' => new DateTime, 'updated_at' => null ], [ 'name' => &quotWhite & Red Checked Slim Formal Shirt&quot, 'description' => 'White, red and blue checked formal shirt, has a contrast spread collar, a full button placket, long sleeves, a curved hemline', 'quantity' => 37, 'price' => 378.00, 'image' => 'https://assets.myntassets.com/h_1440,q_100,w_1080/v1/assets/images/1038966/2015/1 /8/11449575702385-INVICTUS-White--Red-Checked-Slim-Formal-Shirt-5221449575701961 1.jpg', 'created_at' => new DateTime, 'updated_at' => null, ], ]; DB::table('products')->insert($products); } }

بعد از اینکه seeder های خود را ساختید با استفاده از دستور زیر میتوانید آنها را وارد دیتابیس کنید و آماده ی استفاده باشند :

php artisan db:seed

برای قسمت اول همینقدر کافی است. باقی قسمت ها را در پارت دوم این مقاله ی آموزشی مینویسم.

اگر قصد دارید بصورت ویدیویی ساختن یک فروشگاه با لاراول را یاد بگیرید من از دوره ی آموزش پروژه محور ساخت فروشگاه مشابه دیجیکالا سایت آواسام استفاده کردم و به شما هم پیشنهاد میدم که از این دوره ی فوق العاده برای ساختن یک فروشگاه کامل به همراه سورس کد آماده و پشتیبانی و ... در این دوره شرکت کنید.

برای تهیه دوره ی بالا میتوانید به لینک زیر برید :

دوره ی آموزش ساخت فروشگاه اینترنتی مشابه دیجی کالا با لاراول به همراه سورس با اپ موبایل


به زودی پارت دوم این مقاله ی آموزشی را هم مینویسم تا یک فروشگاه ساده با لاراول را بسازید.

لاراولآموزش لاراولچرا لاراولlaravelساخت فروشگاه با لاراول
دولوپر و دانشجوی ارشد صنعتی شریف
شاید از این پست‌ها خوشتان بیاید