Skip to content
AlexFloppy edited this page Jan 28, 2015 · 10 revisions

Description

Used for build grid view for entity. It's also allows paginate and use filters.

Usage

Step1

Create grid class for your entity. It's recomend to place in /src/ModuleName/Grid/Grid.php

<?php

namespace User\Grid;

use Fury\Grid\AbstractGrid;

class Grid extends AbstractGrid
{
    public function init()
    {
        $em = $this->sm->get('Doctrine\ORM\EntityManager');
        // create query builder
        $source = $em->createQueryBuilder()
            ->select(['user.id', 'user.email', 'user.displayName', 'user.role', 'user.status', 'user.created'])
            ->from('\User\Entity\User', 'user');
        $this
            // set query
            ->setSource($source)
            // set columns for grid
            ->setColumns(
                [
                    'user.id' => 'Id',
                    'user.email' => 'Email',
                    'user.displayName' => 'Name',
                    'user.role' => 'Role',
                    'user.status' => 'Status',
                    'user.created' => 'Created'
                ]
            )
            // set fields for filtering
            ->setAllowedFilters(['user.email', 'user.displayName'])
            // set fields for ordering
            ->setAllowedOrders(['user.id', 'user.email', 'user.displayName', 'user.role', 'user.status', 'user.created']);
    }
}

Step2

Controller - this is default action for grid:

public function indexAction()
{
    $sm = $this->getServiceLocator();
    $grid = new Grid($sm);
    $viewModel = new ViewModel(['grid' => $grid]);
    $viewModel->setTerminal($this->getRequest()->isXmlHttpRequest());
    return $viewModel;
}

Step3

View - you can find default grid view in User module: /module/User/view/user/management/index.phtml . It's enough. You get valid grid view by your entity.

Grid view helpers

Grid view allow use helpers:

  • filter
  • paginator
  • limit

Filter

Just add to your view:

<?= $this->filter($this->grid) ?>

You can change list of filtered columns by method Grid->setAllowedFilters()

Paginator

Default pagination row limit is 10 entities. To customize this option you can use Limit helper. For use pagination add to your view:

<?= $this->pagination($this->grid, ['class' => ['pagination', 'pull-left']]) ?>

Limit

Just add to your view:

<?= $this->limit($this->grid, ['class' => 'pagination pagination-small pull-right']) ?>

By defaults limits setted as:

protected $limit = [10, 25, 50];

This options customized by 'limit' parameter:

<?= $this->limit($this->grid, 
['class' => 'pagination pagination-small pull-right', 'limit' => [5,15,25]]) ?>

Clone this wiki locally