Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
v1
Feb 6, 2021
v1
Feb 6, 2021
src
v1
Feb 6, 2021
v1
Feb 6, 2021
v1
Feb 6, 2021
v1
Feb 6, 2021
v1
Feb 6, 2021

README.md

Laravel E-Commerce / Cart

Ру�?�?кий | English

— Laravel
1.x 7.x

У�?тановка

$ composer require webdevrus/laravel-cart
  1. Миграции
$ php artisan vendor:publish --tag=cart-migrations
$ php artisan migrate
  1. Конфигураци�?
$ php artisan vendor:publish --tag=cart-config
  1. Указать трейт HasCart в модели User.
<?php

namespace App\Models;

use WebDevRus\Laravel\Cart\Traits\HasCart;

class User extends Authenticatable
{
    use HasCart;

    ...
}

И�?пользование

use WebDevRus\Laravel\Cart\Facades\Cart;

...

// Добавить товар в корзину
Cart::add([
    'product_id' => 1,
    'quantity' => 3,
    'price' => 500,
]);

// Удалить товар из корзины
Cart::remove([
    'product_id' => 10,
]);

// Вывод корзины
Cart::get();

// Очи�?тить корзину
Cart::clear();

�?а выходе Cart::get() получаем �?одержимое такой �?труктуры

[
    "items" => [
        0 => [
            "price" => 500
            "quantity" => 3
            "product_id" => 1
        ]
        ...
    ]
    "total_count" => 1
    "total_price" => 1500
    "total_quantity" => 3
]

Е�?ли в config/cart.php ключ merge в значении true, то по�?ле авторизации пользовател�?, корзина из session �?ольёт�?�? �? корзиной database.

Пример дополнени�? функционала

Дл�? примера �?оздадим helper-кла�?�? в про�?тран�?тве App\Helpers и назовём его Cart.

Он должен на�?ледовать о�?новной helper-кла�?�? ра�?ширени�? — Helper.

<?php

namespace App\Helpers;

use WebDevRus\Laravel\Cart\Helpers\Helper;

class Cart extends Helper
{
    ...
}

�?е забываем указать �?то в config/cart.php

    'session' => [
        ...
        'helper' => \App\Helpers\Cart::class,
    ],

    'database' => [
        ...
        'helper' => \App\Helpers\Cart::class,
    ],

Пример #1

Допу�?тим, нам нужно добавить новый тип вывода: вме�?то до�?тупных array и object — JSON.

Перейдём в config/cart.php и изменим ключ output

    /**
     * Указываем значение json
     */
    'output' => 'json',

Создадим в App\Helpers\Cart метод toJson()

public function toJson(array $array): string
{
    return json_encode($array);
}

Теперь Cart::get() будет отдавать �?троку в виде JSON.

Пример #2

В helper-кла�?�?е можно �?оздать два метода — before() и after().

before() — вызывает�?�? до формировани�? корзины.

after() — вызывает�?�? по�?ле формировани�? и форматировани�? корзины.

Допу�?тим, нам необходимо добавить к �?лементам в корзине модель товара. �?ам подойдёт метод after(), т.к. по�?ле before() объект модели может преобразовать�?�?.

В таком �?лучае, код будет выгл�?деть примерно так:

    /**
     * @param array|object $cart
     * @return void
     */
    public function after(&$cart)
    {
        $items = data_get($cart, 'items');
        $model = \App\Models\Product::whereIn('id', Arr::pluck($items, 'product_id'))
            ->get();

        foreach ($items as $i => $item) {
            $product = $model->firstWhere('id', data_get($item, 'product_id'));
            data_set($cart, "items.{$i}.product", $product);
        }
    }

�?а выходе мы получим корзину типа array или object �? моделью товара дл�? каждой позиции.

About

🛒 Cart / Laravel E-Commerce

Resources

Languages