Docs Discussion Login Register Get Started Installation Use As Package Administrator Configuration Category Property Attribute Product Developer Create Route Middleware Admin Configuration Admin Menu User Permission Breadcrumb Widget Create Views

Module Widget

Widget facade is very helpful for adding an widget for your custom module. Let say you want add a simple widget for your featured product custom module for AvoRed E commerce. You can do that simply adding into your module.php files boot method by registering a Widget.

use AvoRed\Framework\Widget\Facade as WidgetFacade;
use AvoRed\Featured\Widget\Featured\Widget;

$featuredProduct = new Widget();
WidgetFacade::make($featuredProduct->identifier(), $featuredProduct);

How to create a Widget Class

Only one main thing to keep in mind when creating a Widget class is to use WidgetContract for your widget class. Let say we want to implement an Widget Class for a Feature Product. It can be done using an simple way as shown below:

<?php

namespace AvoRed\Featured\Widget\Featured;

use AvoRed\Framework\Models\Database\ProductPropertyIntegerValue;
use AvoRed\Framework\Repository\Product;
use AvoRed\Framework\Widget\Contracts\Widget as WidgetContract;
use Illuminate\Support\Collection;

class Widget implements WidgetContract
{

    /**
     *
     * Widget View Path
     *
     * @var string $view
     */

    protected $view = "avored-featured::widget.index";

    /**
     *
     * Widget Label
     *
     * @var string $view
     */

    protected $label = 'Featured List';

    /**
     *
     * Widget Type
     *
     * @var string $view
     */

    protected $type = "cms";

    /**
     *
     * Widget unique identifier
     *
     * @var string $identifier
     */
    protected $identifier = "avored-featured";

    public function view()
    {
        return $this->view;
    }

    /*
     * Widget unique identifier
     *
     */
    public function identifier()
    {

        return $this->identifier;
    }

    /*
    * Widget unique identifier
    *
    */
    public function label()
    {

        return $this->label;
    }

    /*
    * Widget unique identifier
    *
    */
    public function type()
    {

        return $this->type;
    }

    /**
     * View Required Parameters
     *
     * @return array
     */
    public function with()
    {

        return [];

    }

    public function render() {

        $productRepository = new Product();

        $featuredProperty = $productRepository->propertyModel()->whereIdentifier('avored-is-featured')->first();

        $featuredProductIds = ProductPropertyIntegerValue::wherePropertyId($featuredProperty->id)->paginate(4)->pluck('product_id');

        $products = new Collection();

        foreach ($featuredProductIds as $featuredProductId) {
            $products->push($productRepository->model()->find($featuredProductId));
        }

       // $products = $productRepository->model()->paginate(4);
        return view($this->view())->with('products' , $products);
    }

}
© AvoRed 2019 Privacy