1. Go to this page and download the library: Download arturdoruch/list-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
arturdoruch / list-bundle example snippets
// app/AppKernel.php
public function registerBundles()
{
$bundles = [
// Other bundles
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new ArturDoruch\ListBundle\ArturDoruchListBundle(),
];
}
namespace AppBundle\Controller;
use AppBundle\Form\Type\BookFilterType;
use ArturDoruch\ListBundle\ItemList;
use ArturDoruch\ListBundle\Paginator;
use ArturDoruch\ListBundle\Request\QueryParameterBag;
use ArturDoruch\ListBundle\Sorting\SortChoiceCollection;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
class BookController
{
/**
* @Route(
* "/",
* methods={"GET"}
* )
* @Template("@App/book/list.html.twig")
*/
public function list(Request $request)
{
// (optional) Create filter form.
// Info:
// The request URL query parameter name with filtering parameters, is created based on the form name.
// Because of that use Symfony\Component\Form\FormFactory::createNamed() method
// for creating form with own name (e.g. "filter").
$form = $this->get('form.factory')->createNamed('filter', BookFilterType::class);
$form->handleRequest($request);
// Filtering criteria.
$criteria = [];
if ($form->isSubmitted() && $form->isValid()) {
$criteria = $form->getData();
}
// Get request query parameters (page, limit, sort).
$parameterBag = new QueryParameterBag($request);
// Array with sorting field and order, pair ["field" => "order"]
$sort = $parameterBag->getSort();
// Get book items - array, query or cursor depend on database type.
$bookRepository = '';
$books = $bookRepository->get($criteria, $sort);
$pagination = Paginator::paginate($books, $parameterBag->getPage(), $parameterBag->getLimit(100));
// (optional) Set item limits (overrides values form default config "pagination.item_limits").
$pagination->setItemLimits([50, 100, 200]);
// (optional) Define SortChoiceCollection to display "select" field with sorting options.
// Alternatively you can render sorting links in twig template with "arturdoruch_list_sort_link" function.
$sortChoiceCollection = new SortChoiceCollection();
$sortChoiceCollection
->add('Lowest price', 'price', 'asc') // Sort books by price ascending.
->add('Highest price', 'price', 'desc'); // Sort books by price descending.
return [
'bookList' => new ItemList($pagination, $form, $sortChoiceCollection),
];
}
}
use ArturDoruch\ListBundle\Paginator;
// In controller
$pagination = Paginator::paginate($items, $page, $limit);
$pagination->setItemLimits([50, 100, 200]);
namespace AppBundle\Form\Type;
use AppBundle\Entity\BookCategory;
use ArturDoruch\ListBundle\Form\FilterType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\FormBuilderInterface;
class BookFilterType extends FilterType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
parent::buildForm($builder, $options);
$builder
->add('category', EntityType::class, [
'placeholder' => '-- all --',
'class' => BookCategory::class,
'choice_label' => 'category',
'choice_value' => 'id'
])
->add('author')
->add('title');
}
}
use ArturDoruch\ListBundle\ItemList;
use ArturDoruch\ListBundle\Sorting\SortChoiceCollection;
// In controller action.
$sortChoiceCollection = new SortChoiceCollection();
$sortChoiceCollection
->add('Cheapest first', 'price', 'asc') // Sort books by price ascending.
->add('Expensive first', 'price', 'desc'); // Sort books by price descending.
new ItemList($pagination, $form, $sortChoiceCollection);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.