webprog / shop
Laravel package for an abstract online store with CRUD, currency rates and delivery calculation
dev-main
2026-04-09 10:53 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
- illuminate/cache: ^10.0|^11.0|^12.0
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/http: ^10.0|^11.0|^12.0
- illuminate/routing: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- illuminate/view: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0
This package is auto-updated.
Last update: 2026-04-09 11:06:42 UTC
README
Laravel-пакет для абстрактного интернет-магазина.
Установка
composer require webprog/shop
Публикация ресурсов
# Конфигурация php artisan vendor:publish --tag=shop-config # Blade-шаблоны php artisan vendor:publish --tag=shop-views # Миграции php artisan vendor:publish --tag=shop-migrations php artisan migrate php artisan db:seed --class="Webprog\Shop\Database\Seeders\ShopDatabaseSeeder"
Конфигурация (.env)
SHOP_ROUTE_PREFIX=shop SHOP_CURRENCY_BASE=USD SHOP_DELIVERY_SERVICE=haversine # haversine | openroute | mapbox SHOP_DELIVERY_RATE_PER_KM=0.5 OPENROUTE_API_KEY= MAPBOX_API_KEY=
Маршруты
Маршруты подключаются автоматически из пакета (не публикуются).
| Метод | URI | Действие |
|---|---|---|
| GET | /shop/products | index |
| GET | /shop/products/create | create |
| POST | /shop/products | store |
| GET | /shop/products/{id} | show |
| GET | /shop/products/{id}/edit | edit |
| PUT | /shop/products/{id} | update |
| DELETE | /shop/products/{id} | destroy |
Аналогично для: categories, suppliers, customers, warehouses, orders.
Фасад CurrencyRate
use Webprog\Shop\Facades\CurrencyRate; $rate = CurrencyRate::get('EUR'); // float: курс EUR к USD $amount = CurrencyRate::convert(100, 'EUR'); // float: 100 USD в EUR $rates = CurrencyRate::getRates(); // array: все курсы CurrencyRate::clearCache(); // сбросить кеш
Фасад DeliveryCalculator
use Webprog\Shop\Facades\DeliveryCalculator; $from = ['lat' => 50.45, 'lng' => 30.52]; // Киев $to = ['lat' => 48.46, 'lng' => 35.04]; // Днепр // Метод из конфига: $result = DeliveryCalculator::calculate($from, $to); // Явный выбор метода: $result = DeliveryCalculator::via('haversine')->calculate($from, $to); $result = DeliveryCalculator::via('openroute')->calculate($from, $to); $result = DeliveryCalculator::via('mapbox')->calculate($from, $to); // $result = ['distance_km' => 477.3, 'cost' => 238.65, 'service' => 'haversine']
Лицензия
MIT