The truly Laravel E-commerce Framework

Overview

Vanilo

The Truly Laravel E-commerce Framework

Tests Packagist version Packagist downloads StyleCI MIT Software License

Vanilo's aim is that Laravel developers can rapidly create E-commerce applications with pleasure.

Current Version

2.2

The latest Vanilo version is 2.2.0, and it was released on Sep 11, 2021. It supports Laravel 6.x - 8.x versions and PHP 7.4 - 8.0

Refer to the Roadmap for upcoming versions.

Further Information

The Vanilo Documentation contains technical information about using Vanilo or its components.

There is a demo application available on github.

Feel free to submit your questions, suggestions by adding a new issue here.

Follow us on twitter.

Support Vanilo on Github

Comments
  • Can't assign properties on the admin site.

    Can't assign properties on the admin site.

    Hi. So far things have gone well - nice software and good documentation. I'm having trouble assigning properties to products in the admin UI. I'm attaching the product properties page and then what I see on the product properties page and what I see when I try to assign properties. None of my properties are in the dropdown. Am I missing something to make this work?

    Thanks, Bob Miller

    image image

    question wontfix 
    opened by phoenix-graphics 33
  • Product Attributes?

    Product Attributes?

    Is it possible within the OrderFactory to assign custom variables/attributes to the order? for example at the moment I've got the following:

    $factory = app(OrderFactory::class);
    $item = [
        'product' => 'product',
        'product_id'   => 3,
        'price' => $this->getPrice(Request::get('platform'), Request::get('amount')),
        'name' => 'Virtual Currency',
        'quantity'     => 1,
    ];
    $factory->createFromDataArray([], [$item]);
    

    Would it be possible to maybe add the ability for us to add dynamic elements to the $item such as something like so?

    $factory = app(OrderFactory::class);
    $item = [
        'product' => 'product',
        'product_id'   => 3,
        'price' => $this->getPrice(Request::get('platform'), Request::get('amount')),
        'name' => 'Virtual Currency',
        'quantity' => 1,
        'currency_volume' => '5000'
    ];
    $factory->createFromDataArray([], [$item]);
    
    opened by futdev 18
  • Konekt\Concord\ConcordServiceProvider not publishable

    Konekt\Concord\ConcordServiceProvider not publishable

    After running composer require vanilo/framework I check the vendor list and konekt does not show up so unable to do

    php artisan vendor:publish --provider="Konekt\Concord\ConcordServiceProvider" --tag=config

    Not sure what I'm doing wrong

    PHP 7.4.16 Laravel Framework 8.36.1 PyroCMS v3.9 Composer 1.10.21

    question 
    opened by yat0tv 16
  • Extending the foundation Product model loses images

    Extending the foundation Product model loses images

    <?php
    namespace App\Models;
    
    use Vanilo\Foundation\Models\Product as BaseProduct;
    
    class Product extends BaseProduct
    {
    
    }
    

    Then I have

    ...
        public function service($slug)
        {
            $product = \App\Models\Product::findBySlug($slug);
            $product2 = \Vanilo\Foundation\Models\Product::findBySlug($slug);
            var_dump($product->hasImage());
            var_dump($product2->hasImage());
            die();
        }
    ...
    

    Which is returning

    bool(false) bool(true)
    

    What am I missing here?

    question wontfix 
    opened by KodeStar 15
  • Concord Modules not properly install: Breadcrumds

    Concord Modules not properly install: Breadcrumds

    Hi,

    i followed the instructions of the installation but once i enter the command

    php artisan concord:modules -a

    it replies me :

    Class 'Breadcrumbs' not found

    Could anyone help me ?

    bug 
    opened by ketchank 15
  • Correct select from db

    Correct select from db

    how I can correct and simple select data from db of products with category? my current solution is it

    $products = $this->productFinder
                            ->getQueryBuilder()
                            ->select('products.*',
                                    DB::raw('
                                        (SELECT
                                            `model_taxons`.`taxon_id`
                                            FROM 
                                                `model_taxons`
                                            INNER join `taxons` on `model_taxons`.`taxon_id` = `taxons`.`id`
                                            where products.`id` = `model_taxons`.`model_id` and `model_taxons`.`model_type` = \'product\'
                                                AND `taxons`.taxonomy_id = 2
                                            limit 1
                                        ) AS category_id
                                    '),                                
                            )
                            ->whereIn('state', $statuses)
                            ->orderby('created_at', 'DESC')
                            ->paginate(20);
    

    but it's very big and if i need add new field category_name - then query sets new big size :(

    can help me?

    question 
    opened by mfilin 11
  • Failing Permissions for TaxonController

    Failing Permissions for TaxonController

    Using Laravel 6.18.14.

    image image

    https://github.com/vanilophp/framework/blob/ac2f53d9e7c1599ae314a7134e858306aac1957f/src/resources/views/taxonomy/show.blade.php#L25

    The permissions required should be create taxa instead of create taxons.

    bug 
    opened by S-DICKSON 11
  • User model already extended by another class

    User model already extended by another class

    Hello! Thank you for a great package! Good to have e-shop, which is native to Laravel.

    I have a problem with Vanilo installation along existing application. Documentation says i have to extend User model with \Konekt\AppShell\Models\User, but my User model is already extended by model from another package.

    Is there any way to figure it out?

    enhancement question documentation 
    opened by d-cell 11
  • Countries

    Countries

    when eve i execute "php artisan db:seed --class 'Konekt\Address\Seeds\Countries'" i get error ReflectionException : Class 'Konekt\Address\Seeds\Countries' does not exist Help please

    bug 
    opened by OscarTango1995 11
  • Installing problems with ConcordServiceProvider

    Installing problems with ConcordServiceProvider

    I've tried to install Vanilo, but there is an error Declaration of Konekt\Menu\ItemCollection::add(Konekt\Menu\Item $item) should be compatible with Illuminate\Support\Collection::add($item)

    opened by maksakoviliya 10
  • Issue with extending or implementing User with Vanilo, Laravel 8

    Issue with extending or implementing User with Vanilo, Laravel 8

    Hello, I have a fresh install of Laravel 8 and I'm trying to get Vanilo running (I understand that version 8 isn't fully supported yet).

    After following the instructions, I see the error:

    Class App\User must extend or implement Konekt\User\Contracts\User.
    

    I have tried both the simple and flexible methods.

    In my composer.json:

    "vanilo/framework": "^2.0"
    

    My User model:

    <?php
    
    namespace App\Models;
    
    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Illuminate\Notifications\Notifiable;
    
    class User extends \Konekt\AppShell\Models\User
    {
        use HasFactory, Notifiable;
        
        ...
    

    I have also tried Konekt\User\Contracts\User as the path to extend.

    Any guidance greatly appreciated!

    question 
    opened by tobyl 8
  • Issue with User permissions on new install

    Issue with User permissions on new install

    With a fresh installation of Vanilo 3.1, the superuser can't access admin panel. Some troubleshooting revealed it's likely not authorized properly. Here's the story:

    After following the standard installation steps from https://vanilo.io/docs/3.x/installation https://vanilo.io/docs/3.x/admin-installation I create a superuser successfully, but don't have access to the admin dashboard. Some troubleshooting I did php artisan tinker \App\Models\User::find(1)->can('edit products'); = false user with id 1 is the superuser and the role is properly assigned in DB, role permissions are also properly assigned in DB.

    Decided to test an old Vanilo 3.0 project I have where the issue is not present.

    Then attached the new Vanilo 3.1 project to the old one's DB to test permissions, because they work there. php artisan tinker \App\Models\User::find(2)->can('edit products'); = false User with ID 2 is the superuser on the old project. The new installation's test returned false, indicating the admin user there wasnt properly authorized, keeping in mind that the old project would authorize the same user successfully.

    Here is my concord.php, user.php and appservice provider.

    <?php
    
    namespace App\Providers;
    
    use Illuminate\Support\ServiceProvider;
    
    class AppServiceProvider extends ServiceProvider
    {
        /**
         * Register any application services.
         *
         * @return void
         */
        public function register()
        {
            //
        }
    
        /**
         * Bootstrap any application services.
         *
         * @return void
         */
        public function boot()
        {
            $this->app->concord->registerModel(\Konekt\User\Contracts\User::class, \App\Models\User::class);
        }
    }
    
    <?php
    
    namespace App\Models;
    
    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Illuminate\Notifications\Notifiable;
    use Laravel\Sanctum\HasApiTokens;
    
    class User extends \Konekt\AppShell\Models\User
    {
        use HasApiTokens, HasFactory, Notifiable;
    
        /**
         * The attributes that are mass assignable.
         *
         * @var array<int, string>
         */
        protected $fillable = [
            'name',
            'email',
            'password',
        ];
    
        /**
         * The attributes that should be hidden for serialization.
         *
         * @var array<int, string>
         */
        protected $hidden = [
            'password',
            'remember_token',
        ];
    
        /**
         * The attributes that should be cast.
         *
         * @var array<string, string>
         */
        protected $casts = [
            'email_verified_at' => 'datetime',
        ];
    }
    
    <?php
    
    return [
        'modules' => [
            Vanilo\Foundation\Providers\ModuleServiceProvider::class => [
                // Currency settings
                'currency'    => [
                    'format' => '%1$g%2$s',
                    'code'   => 'BGN',
                    'sign'   => 'лв.',
                ],
                // product images size variants
                'image' => [
                    'product' => [
                        'variants' => [
                            'thumbnail' => [
                                'width'  => 450,
                                'height' => 270,
                                'fit' => 'crop'
                            ],
                            'medium' => [
                                'width'  => 900,
                                'height' => 540,
                                'fit' => 'crop'
                            ]
                        ]
                    ]
                ],
    
            ],
            Konekt\AppShell\Providers\ModuleServiceProvider::class => [
                'ui' => [
                    'name' => 'Shop Admin', // Your app's name to display on admin
                    'url'  => '/admin/product', // Base/Home URL after login (eg. dashboard)
                ],
            ],
            Vanilo\Admin\Providers\ModuleServiceProvider::class,
        ],
        'register_route_models' => true,
    ];
    
    opened by DenaByte 1
  • installation > The given role or permission should use guard `` instead of `web`.

    installation > The given role or permission should use guard `` instead of `web`.

    Role name [admin]:

    admin

    User '[email protected]' has been created (id: 1)

    Konekt\Acl\Exceptions\GuardDoesNotMatch

    The given role or permission should use guard `` instead of web.

    at vendor/konekt/acl/src/Exceptions/GuardDoesNotMatch.php:12 8▕ class GuardDoesNotMatch extends InvalidArgumentException 9▕ { 10▕ public static function create(string $givenGuard, Collection $expectedGuards) 11▕ { ➜ 12▕ return new static("The given role or permission should use guard {$expectedGuards->implode(', ')} instead of {$givenGuard}."); 13▕ } 14▕ } 15▕

      +18 vendor frames
    

    19 artisan:37 Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))

    image

    bug question 
    opened by ayhanbaris 30
  • Customizable items per page pagination in admin interface

    Customizable items per page pagination in admin interface

    Currently items per page pagination in admin interface is harcoded in controllers to 100 items per page (ChannelController, OrderController, ProductController and PropertyController), which seems a little bit too much.

    It would be nice to have this value configurable, I see two possible approches:

    Option 1. Via a config setting in config/concord.php, like:

    return [
        'modules' => [
            Vanilo\Framework\Providers\ModuleServiceProvider::class => [
                'pagination' => [
                    'order' => 25,
                ],
            ],
        ]
    ];
    

    and then in src/Http/Controllers/OrderController.php

    return view('vanilo::order.index', [
        'orders' => $query->paginate(config('vanilo.framework.pagination.order',100)),
        'inactives' => $inactives,
    ]);
    

    Option 2. Or maybe a simpler and global solution would be to just use the default eloquent pagination of 15 items:

    return view('vanilo::order.index', [
        'orders' => $query->paginate(),
        'inactives' => $inactives,
    ]);
    

    And override this seeting via custom model as described in documentation:

    namespace App;
    
    use Vanilo\Framework\Models\Order as BaseOrder;
    
    class Order extends BaseOrder 
    {
        protected $perPage = 25;
    }
    

    How does that sound?

    enhancement 
    opened by damarev 2
  • XSS on TaxonomyController

    XSS on TaxonomyController

    1. Create a new taxonomy
    2. Set name to <script>alert("YOu juST beEn hackED ( ͡° ͜ʖ ͡°) ")</script>
    3. Submit
    4. See alert on the index page

    This issue also occurs in TaxonController@Create.

    bug enhancement 
    opened by S-DICKSON 7
  • Customer account / Customer login / adding data to the customer object

    Customer account / Customer login / adding data to the customer object

    I copied some of the demo code for the checkout flow and now, at this stage, in the database, after going through the checkout flow, I see

    1. Entries in the addresses table
    2. Bill payers
    3. Orders

    Now I have he following questions

    Why do I have no customer in the customers table ? I was assuming the customer would be linked to a Laravel user account or something so that the customer could log back in his/her account later (and see an order list for example). Today, the order is linked to the billpayer but I see no way for this billpayer to authenticate. Actually, this billpayer does not have an email …. So, numbering my questions :

    1. How to create a customer account so that the user can authenticate later ?
    2. How to add an email to the customer or billpayer ?
    3. How to add data to the customer object (like phone)
    4. What are the order statuses today ? Pending means paid and processed by seller ? Or means awaiting payment ?
    5. Also, in the example I do not see any code to populate the "notes" field of the order

    Thanks for your help

    enhancement question documentation 
    opened by samo9789 4
  • Override vanilo controllers

    Override vanilo controllers

    I’m using vanilo in a project I’m working on even though I realise you do not have the 1.0 yet.

    I’ve had to modify a method in a controller in vendor/vanilo/framework/resources/views and I was wondering if you envisioned a system to override some of these controllers in the framework properly ? SO I could have modified views in my main folder and leave everything untouched in vendor.

    Thanks again for your help and this cool project

    question documentation 
    opened by samo9789 2
Owner
Vanilo E-commerce
Truly Laravel E-commerce Framework
Vanilo E-commerce
Aimeos PHP e-commerce framework for ultra fast online shops, scalable marketplaces, complex B2B applications

Aimeos is an Open Source e-commerce framework for online shops consisting of the e-commerce library, the administration interface and different front-ends. It's a modular stack that offers an unmatched combination of flexibility and speed.

Aimeos 2.6k Dec 30, 2022
Commerce GrappQL Package for Laravel

Sailwork Commerce Package for Laravel Document Please read document in here: Document Installation You can install the package via composer: composer

Sail Work 6 May 10, 2021
Laravel FREE E-Commerce Software

Laravel FREE E-Commerce Software

Jeff Simons Decena 1.7k Dec 24, 2022
A free open source e-commerce platform for online merchants based on customised version of Laravel.

A free open source e-commerce platform for online merchants based on customised version of Laravel.

Ace Vinayak 58 Oct 19, 2022
E-Commerce Laravel Project

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Mohamed Fadl 2 Dec 10, 2022
A e-commerce website with Laravel, Vue

A eCommerce using Laravel Version: 1.0 Release of the Laravel eCommerce. Technologies and libraries Laravel 7+, PHP 7+. JavaScript & VueJS Framework.

Jackson Zhang 1 Nov 4, 2021
An E-Commerce package for Laravel with Grafite CMS. Take control of your content and how you sell it! Products, subscriptions, shipping, downloading and more!

Grafite Commerce Grafite has archived this project and no longer supports or develops its code. We recommend using only as a source of ideas for your

Grafite Inc 45 Jun 8, 2021
A developer-friendly e-commerce foundation for your Laravel app

laravel-shopr A developer-friendly e-commerce foundation for your Laravel app. All the features you need for your webshop but without sacrificing you

Happy Pixels AB 208 Nov 2, 2022
Laravel FREE E-Commerce Software

Get discount on Digital Ocean Sign-up with Digital Ocean and get $10 discount! Laravel FREE E-Commerce Software Features Provided Products Cart Checko

Jeff Simons Decena 1.7k Jan 4, 2023
GetCandy - A headless E-Commerce API built on top of Laravel.

A headless E-Commerce API built on top of Laravel. Build amazing online stores with full control over functionality and user experience using headless

GetCandy 438 Jan 4, 2023
GetCandy is an open source E-commerce platform which embraces Laravel

GetCandy is an open source E-commerce platform which embraces Laravel as it's foundation and uses it to build a highly extensible, robust and feature rich application you can build any store on.

GetCandy 16 Jun 15, 2022
GetCandy is a package that brings functionality akin to Shopify and other e-commerce platforms to Laravel.

GetCandy is a set of Laravel packages that bring functionality akin to Shopify and other e-commerce platforms to Laravel. You have complete freedom to

GetCandy 7 Oct 27, 2022
Aimeos is THE professional, full-featured and high performance e-commerce package for Laravel

Aimeos Slim package ⭐ Star us on GitHub — it helps! Aimeos is THE professional, full-featured and high performance e-commerce package for Laravel! You

Aimeos 101 Sep 14, 2022
Miolica: an e-commerce application that uses React.js as the frontend and Laravel as the backend

Miolica: an e-commerce application that uses React.js as the frontend and Laravel as the backend

Valll 5 Apr 20, 2022
Drag and Drop Website Builder and CMS with E-commerce

Microweber: Drag-and-Drop CMS Current version: 1.2 running on Laravel 8! Download | What is Microweber? | Core features of Microweber | Requirements |

Microweber 2.6k Dec 28, 2022
PrestaShop is a fully scalable open source e-commerce solution.

PrestaShop is an Open Source e-commerce web application, committed to providing the best shopping cart experience for both merchants and customers.

PrestaShop 6.9k Jan 9, 2023
A free shopping cart system. OpenCart is an open source PHP-based online e-commerce solution.

OpenCart is a free open source ecommerce platform for online merchants. OpenCart provides a professional and reliable foundation from which to build a successful online store.

OpenCart 6.6k Dec 31, 2022
PHP payment library to easily integrate Baltic banklinks (supports old and new iPizza protocol), E-commerce gateaway (Estcard, Nets Estonia), Liisi Payment Link and Pocopay.

PHP Payment library PHP payment library to easily integrate Baltic banklinks, E-commerce gateaway (Estcard, Nets Estonia), Liizi Payment Link and Poco

Rene Korss 34 Apr 27, 2022
Zen Cart® is a full-function e-commerce application for your website.

Zen Cart® - The Art of E-Commerce Zen Cart® was the first Open Source e-Commerce web application to be fully PA-DSS Certified. Zen Cart® v1.5.8 is an

Zen Cart 304 Jan 6, 2023