Skip to main content

Overview

Core controllers are wired in the starter kit routes. To replace one, point the route to your own controller in routes/web.php. Keep returning response contracts from Esign\UnleashCommerce\Core\Contracts\Http\Responses.

Replace a core controller

Swap the controller class in the route definition:
use App\Http\Controllers\ProductController as AppProductController;
use Esign\UnleashCommerce\Core\Http\Controllers\ProductController as CoreProductController; 

Route::get(
    LaravelLocalization::transRoute('routes.products.show'),
    [CoreProductController::class, 'show'] 
    [AppProductController::class, 'show'] 
)->name('products.show');

Build your custom controller

Return the same response contract that the core controller expects:
namespace App\Http\Controllers;

use Esign\UnleashCommerce\Core\Contracts\Http\Responses\ProductResponse as ProductResponseContract;
use Esign\UnleashCommerce\Core\Contracts\Models\Product as ProductContract;
use Illuminate\Http\Request;

class ProductController
{
    public function show(ProductContract $product, Request $request): ProductResponseContract
    {
        return app(ProductResponseContract::class, [
            'product' => $product,
        ]);
    }
}

Where to update routes

The starter kit routes live in routes/web.php. Replace any core controller class there with your own implementation.

Available core controllers

See the Controllers Reference for a complete list of available controllers.