added order filtering.

This commit is contained in:
Paweł Jędrzejewski 2011-11-07 20:01:18 +01:00
parent b65011adaf
commit 933d0d1a01
4 changed files with 26 additions and 2 deletions

View file

@ -31,8 +31,9 @@ class OrderController extends ContainerAware
$orderManager = $this->container->get('sylius_sales.manager.order');
$orderSorter = $this->container->get('sylius_sales.sorter.order');
$orderFilter = $this->container->get('sylius_sales.filter.order');
$paginator = $orderManager->createPaginator($orderSorter);
$paginator = $orderManager->createPaginator($orderSorter, $orderFilter);
$paginator->setCurrentPage($this->container->get('request')->query->get('page', 1));
$orders = $paginator->getCurrentPageResults();

View file

@ -11,6 +11,8 @@
namespace Sylius\Bundle\SalesBundle\Entity;
use Sylius\Bundle\SalesBundle\Filtering\FilterInterface;
use Sylius\Bundle\SalesBundle\Sorting\SorterInterface;
use Sylius\Bundle\SalesBundle\Model\OrderInterface;
@ -62,13 +64,17 @@ class OrderManager extends BaseOrderManager
/**
* {@inheritdoc}
*/
public function createPaginator(SorterInterface $sorter = null)
public function createPaginator(SorterInterface $sorter = null, FilterInterface $filter = null)
{
$queryBuilder = $this->entityManager->createQueryBuilder()
->select('o')
->from($this->class, 'o')
->orderBy('o.createdAt', 'DESC');
if (null != $filter) {
$filter->filter($queryBuilder);
}
if (null != $sorter) {
$sorter->sort($queryBuilder);
}

View file

@ -11,6 +11,9 @@
namespace Sylius\Bundle\SalesBundle\Model;
use Sylius\Bundle\SalesBundle\Filtering\FilterInterface;
use Sylius\Bundle\SalesBundle\Sorting\SorterInterface;
/**
* Order manager interface.
*
@ -24,6 +27,11 @@ interface OrderManagerInterface
* @return OrderInterface
*/
function createOrder();
/**
* Creates paginator.
*/
function createPaginator(SorterInterface $sorter = null, FilterInterface $filter = null);
/**
* Persist order.

View file

@ -9,9 +9,11 @@
<parameter key="sylius_sales.manager.item.class">Sylius\Bundle\SalesBundle\Entity\ItemManager</parameter>
<parameter key="sylius_sales.manager.status.class">Sylius\Bundle\SalesBundle\Model\StatusManager</parameter>
<parameter key="sylius_sales.sorter.order.class">Sylius\Bundle\SalesBundle\Sorting\ORM\OrderSorter</parameter>
<parameter key="sylius_sales.filter.order.class">Sylius\Bundle\SalesBundle\Filtering\ORM\OrderFilter</parameter>
</parameters>
<services>
<!-- managers... -->
<service id="sylius_sales.manager.order" class="%sylius_sales.manager.order.class%">
<argument type="service" id="doctrine.orm.default_entity_manager" />
<argument>%sylius_sales.model.order.class%</argument>
@ -31,6 +33,13 @@
<argument type="service" id="service_container" />
</call>
</service>
<!-- filters... -->
<service id="sylius_sales.filter.order" class="%sylius_sales.filter.order.class%">
<call method="setContainer">
<argument type="service" id="service_container" />
</call>
</service>
</services>
</container>