PHP code example of warslett / table-builder-bundle
1. Go to this page and download the library: Download warslett/table-builder-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/ */
warslett / table-builder-bundle example snippets php
// config/bundles.php
return [
...
WArslett\TableBuilderBundle\TableBuilderBundle::class => ['all' => true],
];
php
// src/Action/RetrieveUsers.php
namespace App\Action;
use App\Entity\User;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Twig;
use WArslett\TableBuilder\Column\TextColumn;
use WArslett\TableBuilder\DataAdapter\DoctrineOrmAdapter;
use WArslett\TableBuilder\TableBuilderFactoryInterface;
class RetrieveUsers
{
private TableBuilderFactoryInterface $tableBuilderFactory;
private EntityManagerInterface $entityManager;
private Twig\Environment $twigEnvironment;
public function __construct(
TableBuilderFactoryInterface $tableBuilderFactory,
EntityManagerInterface $entityManager,
Twig\Environment $twigEnvironment
) {
$this->tableBuilderFactory = $tableBuilderFactory;
$this->entityManager = $entityManager;
$this->twigEnvironment = $twigEnvironment;
}
public function __invoke(Request $request): Response
{
$table = $this->tableBuilderFactory->createTableBuilder()
->rowsPerPageOptions([10, 20, 50])
->defaultRowsPerPage(10)
->add(TextColumn::withProperty('email')->sortable())
->add(DateTimeColumn::withProperty('last_login')
->format('g:ia jS M Y')
->sortable())
->add(ActionGroupColumn::withName('actions')
->add(ActionBuilder::withName('update')
->route('user_update', ['id' => 'id'])) // map 'id' parameter to property path 'id'
->add(ActionBuilder::withName('delete')
->route('user_delete', ['id' => 'id'])
->attribute('extra_classes', ['btn-danger'])))
->buildTable('users')
->setDataAdapter(DoctrineOrmAdapter::withQueryBuilder($this->entityManager->createQueryBuilder()
->select('u')
->from(User::class, 'u'))
->mapSortToggle('email', 'u.email')
->mapSortToggle('last_login', 'u.lastLogin'))
->handleSymfonyRequest($request)
;
return new Response($this->twigEnvironment->render('table_page.html.twig', [
'users_table' => $table
]));
}
}