Vanilo E-Commerce фреймворк на Laravel. Установка, настройка, обзор
Запуск интернет-магазина на Vanilo Framework.
Внимание!
Vanilo предоставляет только админку. Витрину нужно делать самому. Хотя, есть demo-проект с витриной - https://github.com/vanilophp/demo.
Устанавливаем ядро Laravel Framework 5.8 - будет создан каталог my-marketplace/, можете указать название:
composer create-project --prefer-dist laravel/laravel my-marketplace
Переходим в каталог my-marketplace/.
Задаем права на каталоги и создаем симлинк файлового хранилища:
chmod -R 777 storage/ bootstrap/
php artisan storage:link
Устанавливаем пакет Vanilo Framework:
composer require vanilo/framework '0.5.*'
Установка занимает около 2-3 минут на Laravel и также vanilo/framework.
Публикуем конфиг config/concord.php:
php artisan vendor:publish --provider="Konekt\Concord\ConcordServiceProvider" --tag=config
Добавим в config/concord.php обязательные модули:
return [
'modules' => [
Konekt\AppShell\Providers\ModuleServiceProvider::class => [
'ui' => [
'name' => 'Vanilo',
'url' => '/admin/product'
]
],
Vanilo\Framework\Providers\ModuleServiceProvider::class
]
];
Примечание
Доступные модули покажет команда:
php artisan concord:modules -a
Создаем БД и указываем credentials в .env. Кодировка обычно utf8mb4_unicode_ci.
Запускаем миграцию таблиц:
php artisan migrate
Внимание!
На этапе применения миграций, я поймал ошибку в миграции vendor/konekt/user/src/resources/database/migrations/2016_12_18_121118_create_profiles_table.php(30):
Illuminate\Database\QueryException:
SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `profiles` add constraint `profiles_user_id_foreign` foreign key (`user_id`) references `users` (`id`))
Проблема в том, что в новом Laravel в миграции database/migrations/2014_10_12_000000_create_users_table.php колонке user.id задан тип bigint(20), а все колонка profiles.user_id с типом int(10).
Отредактируйте миграцию database/migrations/2014_10_12_000000_create_users_table.php:
Schema::create('users', function (Blueprint $table) {
//$table->bigIncrements('id');
$table->increments('id');
И запустите повторное применение миграций:
php artisan migrate:fresh -v
По желанию можно выгрузить тестовые данные:
php artisan db:seed --class 'Konekt\Address\Seeds\Countries'
Инициализируем авторизацию:
php artisan make:auth
Наследуемся нашей моделью User:
class User extends \Konekt\AppShell\Models\User
{
// use Notifiable;
// protected $fillable = ['name', 'email', 'password'];
// protected $hidden = ['password', 'remember_token'];
// protected $casts = ['email_verified_at' => 'datetime'];
}
Регистрируем модели пользователей в app/Providers/AppServiceProvider.php:
class AppServiceProvider extends ServiceProvider
{
public function register()
{
//
}
public function boot()
{
$this->app->concord->registerModel(\Konekt\User\Contracts\User::class, \App\User::class);
}
}
Инициализируем админ-пользователя:
php artisan appshell:super
Правим webpack.mix.js:
const mix = require('laravel-mix');
// mix.js('resources/js/app.js', 'public/js')
// .sass('resources/sass/app.scss', 'public/css');
mix.js('resources/js/app.js', 'public/js')
.js('vendor/konekt/appshell/src/resources/assets/js/appshell.standalone.js', 'public/js/appshell.js')
.sass('vendor/konekt/appshell/src/resources/assets/sass/appshell.sass', 'public/css')
// Keep this for the "rest" (usually public frontend)
.sass('resources/sass/app.scss', 'public/css');
Устанавливаем assets-зависимости и запускаем сборку фронта:
yarn install
yarn run dev
Запускаем built-in PHP веб-сервер и смотри админку http://127.0.0.1:8087/:
php artisan serve --port 8087
Примечание
Чтобы корректно работали ссылки на изображения - укажите APP_URL в конфиг-файле .env.
Перечень таблиц, которые создает Vanilo (кроме users):
addresses billpayers cart_items carts countries
customer_addresses customers media migrations model_permissions
model_property_values model_roles model_taxons order_items orders
organizations password_resets permissions persons preferences
products profiles properties property_values provinces
role_permissions roles settings taxonomies taxons
users
#e-commerce, #vanilo.io