1. Go to this page and download the library: Download omniconva/laravel library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
omniconva / laravel example snippets
namespace App\OmniConva;
use App\Models\Product;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use OmniConva\Laravel\Data\ProductData;
use OmniConva\Laravel\Data\VariantData;
use OmniConva\Laravel\Sources\EloquentProductSource;
class Products extends EloquentProductSource
{
public function query(): Builder
{
// Only what OmniConva may sell; eager-load what map() reads.
return Product::query()->where('is_active', true)->with(['variants', 'images', 'categories']);
}
public function map(Model $product): ProductData
{
return ProductData::make($product->id, $product->name)
->url(route('products.show', $product))
->description($product->description)
->sku($product->sku)
->price($product->price)
->salePrice($product->sale_price) // only counts when below the price
->stockQuantity($product->stock) // or ->inStock(true) if you don't count stock
->images($product->images->pluck('url'))
->categories($product->categories->pluck('name'))
->brand($product->brand)
->variants($product->variants->map(
fn ($variant) => VariantData::make($variant->id, $variant->name)
->sku($variant->sku)
->price($variant->price)
->stockQuantity($variant->stock)
->image($variant->image_url)
->options(['Size' => $variant->size, 'Color' => $variant->color])
))
->updatedAt($product->updated_at);
}
}
namespace App\OmniConva;
use App\Models\Order;
use OmniConva\Laravel\Contracts\OrderHandler;
use OmniConva\Laravel\Data\OrderData;
use OmniConva\Laravel\Data\OrderResult;
class Orders implements OrderHandler
{
public function createOrder(OrderData $order): OrderResult
{
$saved = Order::create([
'customer_name' => $order->customer->name,
'phone' => $order->customer->phone,
'address' => $order->shippingAddress->address,
'city' => $order->shippingAddress->city,
'shipping' => $order->shipping?->amount ?? 0,
'discount' => $order->discount,
'total' => $order->total,
'payment_method' => 'cod',
]);
foreach ($order->items as $item) {
$saved->items()->create([
'product_id' => $item->productId, // your product id
'variant_id' => $item->variantId, // your variant id, or null
'quantity' => $item->quantity,
'price' => $item->unitPrice,
]);
}
return OrderResult::make($saved->id, $saved->number);
}
}
use OmniConva\Laravel\Concerns\SyncsWithOmniConva;
class Product extends Model
{
use SyncsWithOmniConva;
}
use OmniConva\Laravel\Concerns\SyncsParentWithOmniConva;
class ProductVariant extends Model
{
use SyncsParentWithOmniConva; // uses $this->product; override omniConvaParent() otherwise
}
use OmniConva\Laravel\Facades\OmniConva;
OmniConva::productUpdated($product); // a model, or a ProductData
OmniConva::productDeleted($productId);
use OmniConva\Laravel\Data\Tracking;
use OmniConva\Laravel\Facades\OmniConva;
OmniConva::orderUpdated($order->id, 'shipped', Tracking::make('TRK123', 'Pathao', $trackingUrl));