Skip to content

Commit 935b9b5

Browse files
authored
fix(laravel): json api default parameters (api-platform#7027)
1 parent d1ff716 commit 935b9b5

File tree

3 files changed

+21
-15
lines changed

3 files changed

+21
-15
lines changed

src/Laravel/ApiPlatformProvider.php

+11-11
Original file line numberDiff line numberDiff line change
@@ -810,17 +810,17 @@ public function register(): void
810810
$pagination = $config->get('api-platform.pagination');
811811

812812
return new PaginationOptions(
813-
$defaults['pagination_enabled'],
814-
$pagination['page_parameter_name'],
815-
$defaults['pagination_client_items_per_page'],
816-
$pagination['items_per_page_parameter_name'],
817-
$defaults['pagination_client_enabled'],
818-
$pagination['enabled_parameter_name'],
819-
$defaults['pagination_items_per_page'],
820-
$defaults['pagination_maximum_items_per_page'],
821-
$defaults['pagination_partial'],
822-
$defaults['pagination_client_partial'],
823-
$pagination['partial_parameter_name'],
813+
$defaults['pagination_enabled'] ?? true,
814+
$pagination['page_parameter_name'] ?? 'page',
815+
$defaults['pagination_client_items_per_page'] ?? false,
816+
$pagination['items_per_page_parameter_name'] ?? 'itemsPerPage',
817+
$defaults['pagination_client_enabled'] ?? false,
818+
$pagination['enabled_parameter_name'] ?? 'pagination',
819+
$defaults['pagination_items_per_page'] ?? 30,
820+
$defaults['pagination_maximum_items_per_page'] ?? 30,
821+
$defaults['pagination_partial'] ?? false,
822+
$defaults['pagination_client_partial'] ?? false,
823+
$pagination['partial_parameter_name'] ?? 'partial',
824824
);
825825
});
826826

src/Laravel/Tests/JsonApiTest.php

+10
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@
1313

1414
namespace ApiPlatform\Laravel\Tests;
1515

16+
use ApiPlatform\JsonApi\Filter\SparseFieldset;
17+
use ApiPlatform\Laravel\Eloquent\Filter\JsonApi\SortFilter;
1618
use ApiPlatform\Laravel\Test\ApiTestAssertionsTrait;
19+
use ApiPlatform\Metadata\QueryParameter;
1720
use Illuminate\Contracts\Config\Repository;
1821
use Illuminate\Foundation\Application;
1922
use Illuminate\Foundation\Testing\RefreshDatabase;
@@ -42,6 +45,13 @@ protected function defineEnvironment($app): void
4245
$config->set('api-platform.docs_formats', ['jsonapi' => ['application/vnd.api+json']]);
4346
$config->set('api-platform.resources', [app_path('Models'), app_path('ApiResource')]);
4447
$config->set('api-platform.pagination.items_per_page_parameter_name', 'limit');
48+
$config->set('api-platform.defaults', [
49+
'route_prefix' => '/api',
50+
'parameters' => [
51+
new QueryParameter(key: 'fields', filter: SparseFieldset::class),
52+
new QueryParameter(key: 'sort', filter: SortFilter::class),
53+
],
54+
]);
4555

4656
$config->set('app.debug', true);
4757
});

src/Laravel/workbench/app/Models/Book.php

-4
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@
1313

1414
namespace Workbench\App\Models;
1515

16-
use ApiPlatform\JsonApi\Filter\SparseFieldset;
1716
use ApiPlatform\Laravel\Eloquent\Filter\BooleanFilter;
1817
use ApiPlatform\Laravel\Eloquent\Filter\DateFilter;
1918
use ApiPlatform\Laravel\Eloquent\Filter\EqualsFilter;
20-
use ApiPlatform\Laravel\Eloquent\Filter\JsonApi\SortFilter;
2119
use ApiPlatform\Laravel\Eloquent\Filter\OrderFilter;
2220
use ApiPlatform\Laravel\Eloquent\Filter\OrFilter;
2321
use ApiPlatform\Laravel\Eloquent\Filter\PartialSearchFilter;
@@ -82,8 +80,6 @@
8280
)]
8381
#[QueryParameter(key: 'properties', filter: PropertyFilter::class)]
8482
#[QueryParameter(key: 'published', filter: BooleanFilter::class)]
85-
#[QueryParameter(key: 'fields', filter: SparseFieldset::class)]
86-
#[QueryParameter(key: 'sort', filter: SortFilter::class)]
8783
class Book extends Model
8884
{
8985
use HasFactory;

0 commit comments

Comments
 (0)