-
Notifications
You must be signed in to change notification settings - Fork 4
Grid
l2avenholm edited this page Jan 28, 2015
·
10 revisions
Used for build grid view for entity. It's also allows paginate and use filters.
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']);
}
}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;
}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 allow use helpers:
- filter
- paginator
- limit
Just add to your view:
<?= $this->filter($this->grid) ?>You can change list of filtered columns by method Grid->setAllowedFilters()
Default pagination row limit is 10 entities per page. To customize this option you can use Limit helper. For use pagination add to your view:
<?= $this->pagination($this->grid, ['class' => ['pagination', 'pull-left']]) ?>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]]) ?>