Skip to main content
Version: 4.1

Order List Filter

This comes in handy if you need some special filtered data in your Order List. Your Customer is able to filter orders on specific conditions.

filter

Register Filter Service

App\CoreShop\OrderList\Filter\DemoFilter:
tags:
- { name: coreshop.grid.filter, type: demo }

Create PHP Class

In this example we want to filter orders with available shipments in state "ready".

<?php

namespace App\CoreShop\OrderList\Filter;

use CoreShop\Component\Pimcore\DataObject\Grid\GridFilterInterface;
use Pimcore\Db\ZendCompatibility\QueryBuilder;
use Pimcore\Model\DataObject;

class DemoFilter implements GridFilterInterface
{
public function getName(): string
{
return 'coreshop.order_filter.shipment_apply';
}

public function filter(DataObject\Listing $list, array $context): DataObject\Listing
{
$list->onCreateQuery(function (QueryBuilder $select) use ($list) {
$select->join(
['shipment' => 'object_query_4'],
'shipment.order__id = object_' . $list->getClassId() . '.id'
);
});

$list->addConditionParam('orderState = ?', 'confirmed');
$list->addConditionParam('shipment.state = ?', 'ready');

return $list;
}

public function supports(string $listType): bool
{
return $listType === 'coreshop_order';
}
}