cwd / grid-bundle
A Simple Table Grid Bundle
Installs: 968
Dependents: 1
Suggesters: 0
Security: 0
Stars: 3
Watchers: 3
Forks: 0
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=8.1
- babdev/pagerfanta-bundle: >3.6
- pagerfanta/pagerfanta: >3.6
- symfony/framework-bundle: >5.4
- symfony/options-resolver: >5.4
- symfony/twig-bundle: >5.4
- twig/twig: ^v3.1.0
Requires (Dev)
- phpstan/phpstan: ^1.5
- phpstan/phpstan-beberlei-assert: ^1.0
- phpstan/phpstan-symfony: ^1.1
- symfony/css-selector: @stable
- symfony/orm-pack: *
- symfony/phpunit-bridge: @stable
Suggests
- doctrine/orm: For using DoctrineAdapter
- pagerfanta/doctrine-orm-adapter: For using DoctrineAdapter
- symfony/form: Needed for using EntityType
- symfony/translation: For using Translations
- symfony/workflow: Needed for using WorkflowActionType
README
EnumType
The column is designed to display and filter data based on a PHP-backed enum
. It automatically generates a dropdown filter containing all the enum cases, making it easy for users to filter the grid by a specific enum value. EnumType
The display values and the filter options are automatically translated using Symfony's translator. The enum's case value is used as the translation key.
Options
class
(required): The fully qualified class name of the backed enum.allOptionsLabel
: The translation key for the default "all" option in the filter dropdown. Defaults to'all'
.translatable
: Whentrue
(default), the enum value will be passed through the translator.
Usage Example
Here's how to configure a column in your grid: EnumType
->add(new EnumType('companyAddressState', 'certificate.companyAddressState', [ 'label' => 'State', 'class' => State::class, 'allOptionsLabel' => 'all states', ]))
This column requires a corresponding PHP enum definition:
<?php namespace App\Domain\Country; enum State: string { case BURGENLAND = 'BURGENLAND'; case CARINTHIA = 'CARINTHIA'; case LOWER_AUSTRIA = 'LOWER_AUSTRIA'; // ... other cases }
And for the translations, you can define them in your translation files (e.g., messages.en.yaml
):
# Austrian states "all states": "All states" BURGENLAND: "Burgenland" CARINTHIA: "Carinthia" LOWER_AUSTRIA: "Lower Austria" # ... other translations
AbstractColumn Options
sqlSortFields
The sqlSortFields
option allows you to define custom order for a column using one or more different database fields. This is particularly useful when the displayed column's data is not ideal for direct sorting, or when a multi-level sort is required.
Important: This feature is currently only implemented for the Doctrine adapter.
When a user clicks to sort a column that has sqlSortFields
defined, the grid will order the results by the columns listed in the option, in the sequence they are provided.
Usage Example
In this example, the grid displays a certificate.certificateNumber
. When the user sorts by this column, the underlying query will sort the data first by certificate.year
and then by certificate.internalCertificateNumber
.
->add(new TextType('certificateNumber', 'certificate.certificateNumber', [ 'label' => 'Certificate Number', 'sqlSortFields' => ['certificate.year', 'certificate.internalCertificateNumber'], ]))