1. Go to this page and download the library: Download check24/apitk-url-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/ */
check24 / apitk-url-bundle example snippets
//UserRepository.php
use Shopping\ApiTKUrlBundle\Repository\ApiToolkitRepository;
class UserRepository extends ApiToolkitRepository
{
public function findByRequest(ApiService $apiService): array
{
$qb = $this->createQueryBuilder('u');
$qb->leftJoin('u.addresses', 'a')->distinct();
$apiService->applyToQueryBuilder($qb);
return $qb->getQuery()->getResult();
}
}
//UserRepository.php
use Shopping\ApiTKUrlBundle\Repository\ApiToolkitRepository;
class UserRepository extends ApiToolkitRepository
{
public function findBarBaz(ApiService $apiService): array
{
// your own logic
}
}
//UserController.php
/**
* @ApiTK\Result("users", entity="App\Entity\User", methodName="findBarBaz")
*/
public function getUsers(array $users)
{
return $users;
}
//UserController.php
public function getUsersV1(EntityManagerInterface $entityManager, ApiService $apiService)
{
$users = $entityManager->getRepository(User::class)->findAll();
//Filtering
if ($apiService->hasFilteredField('username')) {
$usernameFilter = $apiService->getFilteredField('username');
$users = array_filter($users, function($user) use ($usernameFilter) {
if ($usernameFilter->getComparison() === ApiTK\Filter::COMPARISON_EQUALS) {
return $user->getUsername() === $usernameFilter->getValue();
}
return false;
});
}
/*...*/
//Sorting
foreach (array_reverse($apiService->getSortedFields()) as $sortField) {
if ($sortField->getName() === 'username') {
usort($users, function($user1, $user2) use ($sortField) {
if ($sortField->getDirection === ApiTK\Sort::ASCENDING) {
return $user1->getUsername() <=> $user2->getUsername();
} else {
return $user2->getUsername() <=> $user1->getUsername();
}
});
}
/*...*/
}
//Pagination
$apiService->setPaginationTotal(count($users));
$users = array_slice($users, $apiService->getPaginationOffset(), $apiService->getPaginationLimit());
return $users;
}
//UserController.php
/**
* @ApiTK\Filter(name="search", autoApply=false)
*
* @ApiTK\Result("users", entity="App\Entity\User")
*/
public function getUsers(array $users)
{
return $users;
}
//UserRepository.php
use Shopping\ApiTKUrlBundle\Repository\ApiToolkitRepository;
class UserRepository extends ApiToolkitRepository
{
public function findByRequest(ApiService $apiService): array
{
$qb = $this->createQueryBuilder('u');
if ($apiService->hasFilteredField('search')) {
$search = $apiService->getFilteredField('search');
$qb->andWhere(
$qb->expr()->orX(
$qb->expr()->like('u.username', ':query'),
$qb->expr()->like('u.email', ':query')
)
)->setParameter('query', '%' . $search . '%');
}
$apiService->applyToQueryBuilder($qb);
return $qb->getQuery()->getResult();
}
}
//UserController.php
/**
* @ApiTK\Sort(name="mySortProperty", autoApply=false)
*
* @ApiTK\Result("users", entity="App\Entity\User")
*/
public function getUsers(array $users)
{
return $users;
}
//UserRepository.php
use Shopping\ApiTKUrlBundle\Repository\ApiToolkitRepository;
class UserRepository extends ApiToolkitRepository
{
public function findByRequest(ApiService $apiService): array
{
$qb = $this->createQueryBuilder('u');
$apiService->applyToQueryBuilder($qb);
if ($apiService->hasSortedField('mySortProperty')) {
// perform your own sorting logic for this field
}
return $qb->getQuery()->getResult();
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.