Pipelines

Pipelines

What are the available pipelines




Class Description Payload
CartItemBuilder The process that occurs when adding an item to the cart. Extending this class allows for manipulation of the cart item before it is saved to the cart. Aero\Cart\CartItem $item
ContentForHead The HTML content that will be inserted into the tag of the page. String $content
ContentForBody The HTML content that will be inserted just before the closing tag of the page. String $content
RobotsTxt The robots.txt file. For more information, click here. Illuminate\Support\Collection $content

How do I extend pipelines?

The payload data can be altered using the **extend()**method. This is typically done from within a Service Provider. If the code is unique to a particular store it could be placed in the **boot()**method of the AppServiceProvider. If it is to be included as part of a module, then it can be added to the setup method of the module's Service Provider.

For example, if a module needs to add an option to items to flag them as requiring gift wrap, the CartItemBuilderpipeline class should be extended in the module's ServiceProvideras shown below:

<?php

namespace Acme\MyModule;

use Aero\Cart\CartItemOption;
use Aero\Common\Providers\ModuleServiceProvider;
use Aero\Store\Pipelines\CartItemBuilder;

class ServiceProvider extends ModuleServiceProvider
{
    public function setup() 
    {
        CartItemBuilder::extend(function ($item) {
            if (request()->has('gift_wrap')) {
                $option = CartItemOption::create('Gift wrap');

                $item->addOption($option);
            }
        });
    }
}

To adjust a payload which is a simple string, ensure that the payload variable is passed by reference so that it can be directly modified:

\Aero\Store\Pipelines\ContentForHead::extend(function (&$content) {
    $content .= "";

    // or ...

    $content .= view('my_module::script-snippet');
});