agenta / agentanovaposhta
Nova Poshta regions, cities, warehouses updater and search
Requires
- php: ^7.4|^8.0
- daaner/novaposhta: ^0.75.0
- illuminate/support: ^8.0
- rahul900day/laravel-console-spinner: ^1.0
Requires (Dev)
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2025-03-01 00:29:08 UTC
README
Импорт справочников Новой Почты (регионы, города, отделения), обновление справочника отделений из консоли. Компонент Livewire для выбора отделения (область, город, отделение).
Установка
Требования
Laravel 8
PHP 8.x
- Добавить через composer:
composer require agenta/agentanovaposhta
- Публикация файлов библиотеки daaner/novaposhta:
php artisan vendor:publish --provider="Daaner\NovaPoshta\NovaPoshtaServiceProvider"
- Публикация файла конфигурации (config/agentanovaposhta.php):
php artisan vendor:publish --tag=config
- Добавить в файл .env
#API-кей "Новой почты" (см. в личном кабинете) NP_API_KEY= #кол-во объектов на странице API (по опыту - максимум 100, иначе периодически таймаут) AGENTA_NP_CHUNK_SIZE=100
В конфиге можно настроить какие типы отделений импортировать в базу данных:
'import_warehouse_type' => [$NORMAL, $SHOP, $CARGO, $POSTOMAT, $POSTOMAT_PB],
и какие типы отделений доступны для выбора пользователем:
'allowed_warehouse_type' => [$NORMAL, $SHOP, $CARGO, $POSTOMAT, $POSTOMAT_PB],
- Запуск миграции:
php artisan migrate
- Запустить первичный импорт данных (может занимать 10-30 минут и более):
#импорт областей и населенных пунктов php artisan np:import_cities #импорт отделений php artisan np:update_warehouses
Использование
Обновление данных
"Новая Почта" рекомендует обновлять справочник отделений один раз в сутки. Для этого следует запускать команду консоли (данные будут только добавляться, без удаления уже существующих — если отделение не работающее, то модели будет установлен active = false):
php artisan np:update_warehouses
Также можно обновлять справочник населенных пунктов и областей (без удаления, только создание и обновление):
php artisan np:import_cities
Компонент Livewire
- Опубликуйте шаблон компонента и оформите его нужными стилями:
php artisan vendor:publish --tag="views-agentanovaposhta"
- Добавьте в свой blade-шаблон
...
@livewireStyles
</head>
<body>
@livewire('novaposhta-select-warehouse')
...
@livewireScripts
</body>
компоненту можно передавать параметр 'cargo' => true для отображения только тех городов и отделений, которые являются грузовыми (для грузов свыше 30 кг), а также предыдущие выбранные значения области, города и отделения для отображения в случае перезагрузки страницы
@livewire('novaposhta-select-warehouse', [
'cargo' => true,
'selectedRegion' => old('np_region_id'),
'selectedCity' => old('np_city_id'),
'selectedWarehouse' => old('np_warehouse_id'),
])