I try to apply filters With Symfony 6 + API platform 3 with custom route, but only pagination is applied. The standard route is working well.
My actual code:
Entity:
#[ORMTable(name: 'stb_maxi_dev.offer_demand')]
#[ApiResource(
operations: [
new GetCollection(),
new Get(),
new Post(),
new Patch(),
new GetCollection(
name: 'api_export_offers',
controller: OfferController::class,
output: false
)
],
routePrefix: '/maxi',
normalizationContext: ['groups' => ['offers:list', 'status:list', 'source:list', 'tn:list', 'as:list', 'country:list', 'category:list', 'product:list', 'logs:list']],
denormalizationContext: ['groups' => ['offers:write']],
paginationEnabled: false
)]
#[ApiFilter(NumericFilter::class, properties: ['od_status'])]
#[ApiFilter(SearchFilter::class, properties: [
'od_source.id' => 'exact',
'od_country.id' => 'exact',
'od_category.id' => 'exact',
'od_activity_sector.id' => 'exact',
'od_product.id' => 'exact',
'od_team.id' => 'exact',
'od_offer_status.id' => 'exact',
'od_rfq_status.id' => 'exact',
])]
#[ApiFilter(DateFilter::class, properties: ['od_creation_date', 'receivedAt', 'od_date_acknowledgment_receipt', 'date_conctacting'])]
#[ApiFilter(GroupFilter::class, arguments: ['overrideDefaultGroups' => false])]
class OfferController extends AbstractController
{
private $collectionProvider;
private $entityManager;
public function __construct(CollectionProvider $collectionProvider, EntityManagerInterface $entityManager)
{
$this->collectionProvider = $collectionProvider;
$this->entityManager = $entityManager;
}
#[Route('/maxi/offers/export', name: 'api_export_offers', methods: ['GET'])]
public function exportOffers(Request $request, Utils $utils)
{
$filters = $request->query->all();
$operation = new GetCollection(class: OfferDemand::class);
$offerdemands = $this->collectionProvider->provide($operation, [], ['filters' => $filters]);
// CODE TO EXPORT IN XSLX
return $this->file($temp_file, $fileName, ResponseHeaderBag::DISPOSITION_INLINE);
}
}
Is it possible to apply all filters like standard API platform collection endpoint?