From 0ae8a6427594405b54d407dfd821c105301320f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Fr=C3=A9mont?= Date: Mon, 6 Jul 2026 09:16:36 +0200 Subject: [PATCH] docs(grid): use new grid helpers for actions --- docs/cookbook/admin_panel/basic_operations.md | 22 +-- docs/cookbook/admin_panel/grid_export.md | 15 +- docs/cookbook/admin_panel/grids.md | 50 ++--- docs/cookbook/ddd_architecture/grid.md | 23 +-- docs/grid/actions.md | 171 ++++++++---------- docs/grid/configuration.md | 138 +++++++------- docs/grid/fields.md | 1 - docs/grid/filters.md | 2 - docs/grid/your_first_grid.md | 32 +--- 9 files changed, 183 insertions(+), 271 deletions(-) diff --git a/docs/cookbook/admin_panel/basic_operations.md b/docs/cookbook/admin_panel/basic_operations.md index 893057f9..c53008eb 100644 --- a/docs/cookbook/admin_panel/basic_operations.md +++ b/docs/cookbook/admin_panel/basic_operations.md @@ -46,22 +46,16 @@ final class BookGrid extends AbstractGrid implements ResourceAwareGridInterface ->setLabel('Author') ->setSortable(true), ) - ->addActionGroup( - MainActionGroup::create( - CreateAction::create(), - ), + ->withMainActions( + CreateAction::create(), ) - ->addActionGroup( - ItemActionGroup::create( - // ShowAction::create(), - UpdateAction::create(), - DeleteAction::create(), - ), + ->withItemActions( + // ShowAction::create(), + UpdateAction::create(), + DeleteAction::create(), ) - ->addActionGroup( - BulkActionGroup::create( - DeleteAction::create(), - ), + ->withBulkActions( + DeleteAction::create(), ) ; } diff --git a/docs/cookbook/admin_panel/grid_export.md b/docs/cookbook/admin_panel/grid_export.md index 13bf873e..8969704d 100644 --- a/docs/cookbook/admin_panel/grid_export.md +++ b/docs/cookbook/admin_panel/grid_export.md @@ -177,7 +177,6 @@ declare(strict_types=1); namespace App\Grid; use Sylius\Bundle\GridBundle\Builder\Action\Action; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\MainActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; use Sylius\Bundle\GridBundle\Grid\AbstractGrid; use Sylius\Component\Grid\Attribute\AsGrid; @@ -192,14 +191,12 @@ final class BookGrid extends AbstractGrid { $gridBuilder // ... - ->addActionGroup( - MainActionGroup::create( - // ... - Action::create('export', 'export') - // Optional, you can configure it globally instead. - ->setTemplate('shared/grid/action/export.html.twig') - , - ) + ->withMainActions( + // ... + Action::create('export', 'export') + // Optional, you can configure it globally instead. + ->setTemplate('shared/grid/action/export.html.twig') + , ) ; } diff --git a/docs/cookbook/admin_panel/grids.md b/docs/cookbook/admin_panel/grids.md index 56d2e8f2..864b5d19 100644 --- a/docs/cookbook/admin_panel/grids.md +++ b/docs/cookbook/admin_panel/grids.md @@ -19,9 +19,6 @@ use Sylius\Bundle\GridBundle\Builder\Action\CreateAction; use Sylius\Bundle\GridBundle\Builder\Action\DeleteAction; use Sylius\Bundle\GridBundle\Builder\Action\ShowAction; use Sylius\Bundle\GridBundle\Builder\Action\UpdateAction; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\BulkActionGroup; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\MainActionGroup; use Sylius\Bundle\GridBundle\Builder\Field\DateTimeField; use Sylius\Bundle\GridBundle\Builder\Field\StringField; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; @@ -59,22 +56,16 @@ final class TalkGrid extends AbstractGrid ->setPath('track.value') ->setSortable(true), ) - ->addActionGroup( - MainActionGroup::create( - CreateAction::create(), - ) + ->withMainActions( + CreateAction::create(), ) - ->addActionGroup( - ItemActionGroup::create( - // ShowAction::create(), - UpdateAction::create(), - DeleteAction::create() - ) + ->withItemActions( + // ShowAction::create(), + UpdateAction::create(), + DeleteAction::create(), ) - ->addActionGroup( - BulkActionGroup::create( - DeleteAction::create() - ) + ->withBulkActions( + DeleteAction::create(), ) ; } @@ -99,9 +90,6 @@ use Sylius\Bundle\GridBundle\Builder\Action\CreateAction; use Sylius\Bundle\GridBundle\Builder\Action\DeleteAction; use Sylius\Bundle\GridBundle\Builder\Action\ShowAction; use Sylius\Bundle\GridBundle\Builder\Action\UpdateAction; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\BulkActionGroup; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\MainActionGroup; use Sylius\Bundle\GridBundle\Builder\Field\DateTimeField; use Sylius\Bundle\GridBundle\Builder\Field\StringField; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; @@ -124,22 +112,16 @@ final class TalkGrid extends AbstractGrid DateTimeField::create('startsAt') ->setLabel('StartsAt'), ) - ->addActionGroup( - MainActionGroup::create( - CreateAction::create(), - ) + ->withMainActions( + CreateAction::create(), ) - ->addActionGroup( - ItemActionGroup::create( - // ShowAction::create(), - UpdateAction::create(), - DeleteAction::create() - ) + ->withItemActions() + // ShowAction::create(), + UpdateAction::create(), + DeleteAction::create(), ) - ->addActionGroup( - BulkActionGroup::create( - DeleteAction::create() - ) + ->withBulkActions( + DeleteAction::create(), ) ; } diff --git a/docs/cookbook/ddd_architecture/grid.md b/docs/cookbook/ddd_architecture/grid.md index bbe9d879..a984c9e4 100644 --- a/docs/cookbook/ddd_architecture/grid.md +++ b/docs/cookbook/ddd_architecture/grid.md @@ -205,9 +205,6 @@ use App\BookStore\Infrastructure\Sylius\Resource\BookResource; use Sylius\Bundle\GridBundle\Builder\Action\CreateAction; use Sylius\Bundle\GridBundle\Builder\Action\DeleteAction; use Sylius\Bundle\GridBundle\Builder\Action\UpdateAction; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\BulkActionGroup; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\MainActionGroup; use Sylius\Bundle\GridBundle\Builder\Field\StringField; use Sylius\Bundle\GridBundle\Builder\Field\TwigField; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; @@ -229,21 +226,15 @@ final class BookGrid extends AbstractGrid implements ResourceAwareGridInterface StringField::create('name'), StringField::create('author'), ) - ->addActionGroup( - MainActionGroup::create( - CreateAction::create(), - ), + ->withMainActions( + CreateAction::create(), ) - ->addActionGroup( - ItemActionGroup::create( - UpdateAction::create(), - DeleteAction::create(), - ), + ->withItemActions( + UpdateAction::create(), + DeleteAction::create(), ) - ->addActionGroup( - BulkActionGroup::create( - DeleteAction::create(), - ), + ->withBulkActions( + DeleteAction::create(), ) ; } diff --git a/docs/grid/actions.md b/docs/grid/actions.md index fb6e12f3..b0e243fc 100644 --- a/docs/grid/actions.md +++ b/docs/grid/actions.md @@ -38,7 +38,6 @@ namespace App\Grid; use App\Entity\Speaker; use Sylius\Bundle\GridBundle\Builder\Action\CreateAction; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\MainActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; use Sylius\Bundle\GridBundle\Grid\AbstractGrid; use Sylius\Component\Grid\Attribute\AsGrid; @@ -52,14 +51,12 @@ final class SpeakerGrid extends AbstractGrid public function __invoke(GridBuilderInterface $gridBuilder): void { $gridBuilder - ->addActionGroup( - MainActionGroup::create( - // Add the "create" action into the "main" action group - CreateAction::create() - // Optional, you can configure this globally instead. - ->setTemplate('path/to/your/action/template.html.twig') - , - ), + ->withMainActions( + // Add the "create" action into the "main" action group + CreateAction::create() + // Optional, you can configure this globally instead. + ->setTemplate('path/to/your/action/template.html.twig') + , ) ; } @@ -77,7 +74,6 @@ namespace App\Grid; use App\Entity\Speaker; use Sylius\Bundle\GridBundle\Builder\Action\UpdateAction; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; use Sylius\Bundle\GridBundle\Grid\AbstractGrid; use Sylius\Component\Grid\Attribute\AsGrid; @@ -91,14 +87,12 @@ final class SpeakerGrid extends AbstractGrid public function __invoke(GridBuilderInterface $gridBuilder): void { $gridBuilder - ->addActionGroup( - ItemActionGroup::create( - // Add the "update" action into the "item" action group - UpdateAction::create() - // Optional, you can configure this globally instead. - ->setTemplate('path/to/your/action/template.html.twig') - , - ), + ->withItemActions( + // Add the "update" action into the "item" action group + UpdateAction::create() + // Optional, you can configure this globally instead. + ->setTemplate('path/to/your/action/template.html.twig') + , ) ; } @@ -116,8 +110,6 @@ namespace App\Grid; use App\Entity\Speaker; use Sylius\Bundle\GridBundle\Builder\Action\DeleteAction; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\BulkActionGroup; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; use Sylius\Bundle\GridBundle\Grid\AbstractGrid; use Sylius\Component\Grid\Attribute\AsGrid; @@ -131,23 +123,19 @@ final class SpeakerGrid extends AbstractGrid public function __invoke(GridBuilderInterface $gridBuilder): void { $gridBuilder - ->addActionGroup( - ItemActionGroup::create( - // Add the "delete" action into the "item" action group - DeleteAction::create() - // Optional, you can configure this globally instead. - ->setTemplate('path/to/your/action/template.html.twig') - , - ), + ->withItemActions( + // Add the "delete" action into the "item" action group + DeleteAction::create() + // Optional, you can configure this globally instead. + ->setTemplate('path/to/your/action/template.html.twig') + , ) - ->addActionGroup( - BulkActionGroup::create( - // Add the "delete" action into the "bulk" action group - DeleteAction::create() - // Optional, you can configure this globally instead. - ->setTemplate('path/to/your/action/template.html.twig') - , - ), + ->withBulkActions( + // Add the "delete" action into the "bulk" action group + DeleteAction::create() + // Optional, you can configure this globally instead. + ->setTemplate('path/to/your/action/template.html.twig') + , ) ; } @@ -165,7 +153,6 @@ namespace App\Grid; use App\Entity\Speaker; use Sylius\Bundle\GridBundle\Builder\Action\ShowAction; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; use Sylius\Bundle\GridBundle\Grid\AbstractGrid; use Sylius\Component\Grid\Attribute\AsGrid; @@ -179,14 +166,12 @@ final class SpeakerGrid extends AbstractGrid public function __invoke(GridBuilderInterface $gridBuilder): void { $gridBuilder - ->addActionGroup( - ItemActionGroup::create( - // Add the "show" action into the "item" action group - ShowAction::create() - // Optional, you can configure this globally instead. - ->setTemplate('path/to/your/action/template.html.twig') - , - ), + ->withItemActions( + // Add the "show" action into the "item" action group + ShowAction::create() + // Optional, you can configure this globally instead. + ->setTemplate('path/to/your/action/template.html.twig') + , ) ; } @@ -289,25 +274,22 @@ sylius_grid: use App\Entity\Supplier; use Sylius\Bundle\GridBundle\Builder\Action\Action; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilder; use Sylius\Bundle\GridBundle\Config\GridConfig; return static function (GridConfig $grid): void { $grid->addGrid(GridBuilder::create('app_admin_supplier', Supplier::class) - ->addActionGroup( - ItemActionGroup::create( - Action::create('contactSupplier', 'contactSupplier') - ->setLabel('Contact Supplier') - ->setOptions([ - 'link' => [ - 'route' => 'app_admin_contact_supplier', - 'parameters' => [ - 'id' => 'resource.id', - ], + ->withItemActions( + Action::create('contactSupplier', 'contactSupplier') + ->setLabel('Contact Supplier') + ->setOptions([ + 'link' => [ + 'route' => 'app_admin_contact_supplier', + 'parameters' => [ + 'id' => 'resource.id', ], - ]) - ) + ], + ]), ]) ) }; @@ -328,7 +310,6 @@ namespace App\Grid; use App\Entity\Supplier; use Sylius\Bundle\GridBundle\Builder\Action\Action; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; use Sylius\Bundle\GridBundle\Grid\AbstractGrid; use Sylius\Bundle\GridBundle\Grid\ResourceAwareGridInterface; @@ -343,19 +324,17 @@ final class AdminSupplierGrid extends AbstractGrid implements ResourceAwareGridI public function buildGrid(GridBuilderInterface $gridBuilder): void { $gridBuilder - ->addActionGroup( - ItemActionGroup::create( - Action::create('contactSupplier', 'contactSupplier') - ->setLabel('Contact Supplier') - ->setOptions([ - 'link' => [ - 'route' => 'app_admin_contact_supplier', - 'parameters' => [ - 'id' => 'resource.id', - ], + ->withItemActions( + Action::create('contactSupplier', 'contactSupplier') + ->setLabel('Contact Supplier') + ->setOptions([ + 'link' => [ + 'route' => 'app_admin_contact_supplier', + 'parameters' => [ + 'id' => 'resource.id', ], - ]) - ) + ], + ]), ]) ; } @@ -444,26 +423,23 @@ sylius_grid: use App\Entity\Product; use Sylius\Bundle\GridBundle\Builder\Action\Action; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\BulkActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilder; use Sylius\Bundle\GridBundle\Builder\Field\Field; use Sylius\Bundle\GridBundle\Config\GridConfig; return static function (GridConfig $grid) { $grid->addGrid(GridBuilder::create('app_admin_product', Product::class) - ->addActionGroup( - BulkActionGroup::create( - Action::create('export', 'export') - ->setLabel('Export Data') - ->setOptions([ - 'link' => [ - 'route' => 'app_admin_product_export', - 'parameters' => [ - 'format' => 'csv', - ], - ] - ]) - ) + ->withBulkActions( + Action::create('export', 'export') + ->setLabel('Export Data') + ->setOptions([ + 'link' => [ + 'route' => 'app_admin_product_export', + 'parameters' => [ + 'format' => 'csv', + ], + ] + ]), ) ) }; @@ -484,7 +460,6 @@ namespace App\Grid; use App\Entity\Product; use Sylius\Bundle\GridBundle\Builder\Action\Action; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\BulkActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilderInterface; use Sylius\Bundle\GridBundle\Grid\AbstractGrid; use Sylius\Bundle\GridBundle\Grid\ResourceAwareGridInterface; @@ -499,19 +474,17 @@ final class AdminProductGrid extends AbstractGrid implements ResourceAwareGridIn public function buildGrid(GridBuilderInterface $gridBuilder): void { $gridBuilder - ->addActionGroup( - BulkActionGroup::create( - Action::create('export', 'export') - ->setLabel('Export Data') - ->setOptions([ - 'link' => [ - 'route' => 'app_admin_product_export', - 'parameters' => [ - 'format' => 'csv', - ], - ] - ]) - ) + ->withBulkActions( + Action::create('export', 'export') + ->setLabel('Export Data') + ->setOptions([ + 'link' => [ + 'route' => 'app_admin_product_export', + 'parameters' => [ + 'format' => 'csv', + ], + ] + ]), ) ; } diff --git a/docs/grid/configuration.md b/docs/grid/configuration.md index cc6084a1..a2f6d66c 100644 --- a/docs/grid/configuration.md +++ b/docs/grid/configuration.md @@ -158,10 +158,6 @@ sylius_grid: setOptions(['fields' => []]) ->setFormOptions(['type' => 'contains']) // type of string filtering option, if you only want to have one ) - ->addActionGroup(MainActionGroup::create( + ->withMainActions( Action::create('create', 'create') ->setLabel('sylius.ui.create') ->setEnabled(true) ->setIcon('plus') ->setPosition(100) ->setOptions([]), - )) - ->addActionGroup( - ItemActionGroup::create( - Action::create('update', 'update') - ->setLabel('sylius.ui.edit') - ->setEnabled(true) - ->setIcon('pencil') - ->setPosition(100) - ->setOptions([]), - Action::create('delete', 'delete') - ->setLabel('sylius.ui.delete') - ->setEnabled(true) - ->setIcon('trash') - ->setPosition(100) - ->setOptions([]), - Action::create('show', 'show') - ->setLabel('sylius.ui.show') - ->setEnabled(true) - ->setIcon('search') - ->setPosition(100) - ->setOptions([ - 'link' => [ - 'route' => 'app_user_show', - 'parameters' => [ - 'id' => 'resource.id', - ], + ) + ->withItemActions( + Action::create('update', 'update') + ->setLabel('sylius.ui.edit') + ->setEnabled(true) + ->setIcon('pencil') + ->setPosition(100) + ->setOptions([]), + Action::create('delete', 'delete') + ->setLabel('sylius.ui.delete') + ->setEnabled(true) + ->setIcon('trash') + ->setPosition(100) + ->setOptions([]), + Action::create('show', 'show') + ->setLabel('sylius.ui.show') + ->setEnabled(true) + ->setIcon('search') + ->setPosition(100) + ->setOptions([ + 'link' => [ + 'route' => 'app_user_show', + 'parameters' => [ + 'id' => 'resource.id', ], - ]), - Action::create('archive', 'archive') - ->setLabel('sylius.ui.archive') - ->setEnabled(true) - ->setIcon('search') - ->setPosition(100) - ->setOptions([ - 'restore_label' => 'sylius.ui.restore', - ]), - ) + ], + ]), + Action::create('archive', 'archive') + ->setLabel('sylius.ui.archive') + ->setEnabled(true) + ->setIcon('search') + ->setPosition(100) + ->setOptions([ + 'restore_label' => 'sylius.ui.restore', + ]), ) - ->addActionGroup( - BulkActionGroup::create( - Action::create('delete', 'delete') - ->setLabel('sylius.ui.delete') - ->setEnabled(true) - ->setIcon('trash') - ->setPosition(100) - ->setOptions([]), - ) + ->withBulkActions( + Action::create('delete', 'delete') + ->setLabel('sylius.ui.delete') + ->setEnabled(true) + ->setIcon('trash') + ->setPosition(100) + ->setOptions([]), ) - ->addActionGroup( - SubItemActionGroup::create( - Action::create('addresses', 'links') - ->setLabel('sylius.ui.manage_addresses') - ->setOptions([ - 'icon' => 'cubes', - 'links' => [ - 'index' => [ - 'label' => 'sylius.ui.list_addresses', - 'icon' => 'list', - 'route' => 'app_admin_user_address_index', - 'visible' => 'resource.hasAddress', - 'parameters' => [ - 'userId' => 'resource.id', - ], + ->withSubItemActions( + Action::create('addresses', 'links') + ->setLabel('sylius.ui.manage_addresses') + ->setOptions([ + 'icon' => 'cubes', + 'links' => [ + 'index' => [ + 'label' => 'sylius.ui.list_addresses', + 'icon' => 'list', + 'route' => 'app_admin_user_address_index', + 'visible' => 'resource.hasAddress', + 'parameters' => [ + 'userId' => 'resource.id', ], - 'create' => [ - 'label' => 'sylius.ui.generate', - 'icon' => 'random', - 'route' => 'app_admin_user_address_create', - 'parameters' => [ - 'userId' => 'resource.id', - ], + ], + 'create' => [ + 'label' => 'sylius.ui.generate', + 'icon' => 'random', + 'route' => 'app_admin_user_address_create', + 'parameters' => [ + 'userId' => 'resource.id', ], ], - ]), - ) + ], + ]), ) ); }; diff --git a/docs/grid/fields.md b/docs/grid/fields.md index d01cc2c5..6a54077d 100644 --- a/docs/grid/fields.md +++ b/docs/grid/fields.md @@ -463,7 +463,6 @@ sylius_grid: use App\Entity\Supplier; use Sylius\Bundle\GridBundle\Builder\Action\Action; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilder; use Sylius\Bundle\GridBundle\Builder\Field\Field; use Sylius\Bundle\GridBundle\Config\GridConfig; diff --git a/docs/grid/filters.md b/docs/grid/filters.md index b95a0e34..ff8e07f5 100644 --- a/docs/grid/filters.md +++ b/docs/grid/filters.md @@ -1099,8 +1099,6 @@ Now you can use your new filter type in any grid configuration! addActionGroup( - MainActionGroup::create( - CreateAction::create() - ) + ->withMainActions( + CreateAction::create(), ) - ->addActionGroup( - ItemActionGroup::create( - UpdateAction::create(), - DeleteAction::create() - ) + ->withItemActions( + UpdateAction::create(), + DeleteAction::create(), ) ; } @@ -973,23 +967,17 @@ use App\Entity\Supplier; use Sylius\Bundle\GridBundle\Builder\Action\CreateAction; use Sylius\Bundle\GridBundle\Builder\Action\DeleteAction; use Sylius\Bundle\GridBundle\Builder\Action\UpdateAction; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\ItemActionGroup; -use Sylius\Bundle\GridBundle\Builder\ActionGroup\MainActionGroup; use Sylius\Bundle\GridBundle\Builder\GridBuilder; use Sylius\Bundle\GridBundle\Config\GridConfig; return static function (GridConfig $grid) { $grid->addGrid(GridBuilder::create('app_admin_supplier', Supplier::class) - ->addActionGroup( - MainActionGroup::create( - CreateAction::create() - ) + ->withMainActions( + CreateAction::create(), ) - ->addActionGroup( - ItemActionGroup::create( - UpdateAction::create(), - DeleteAction::create() - ) + ->withItemActions( + UpdateAction::create(), + DeleteAction::create(), ) ) };