Vanilo E-Commerce фреймворк на Laravel. Установка, настройка, обзор

Категория: 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

категория: Laravel