diff --git a/src/core/Crud/CrudConfiguration.php b/src/core/Crud/CrudConfiguration.php index 42f0341..f25ee94 100644 --- a/src/core/Crud/CrudConfiguration.php +++ b/src/core/Crud/CrudConfiguration.php @@ -2,8 +2,6 @@ namespace App\Core\Crud; -use App\Core\Crud\Exception\CrudConfigurationException; - /** * class CrudConfiguration. * @@ -109,7 +107,7 @@ class CrudConfiguration /* -- */ - public function setAction(string $page, string $action, bool $enabled): self + public function setAction(string $page, string $action, bool|callable $enabled): self { if (!isset($this->actions[$page])) { $this->actions[$page] = []; @@ -120,9 +118,20 @@ class CrudConfiguration return $this; } - public function getAction(string $page, string $action, bool $default = true) + public function getAction(string $page, string $action, bool $default = true, array $callableParamaters = []) { - return $this->actions[$page][$action] ?? $default; + if (!isset($this->actions[$page][$action])) { + return $default; + } + + if (is_bool($this->actions[$page][$action])) { + return $this->actions[$page][$action]; + } + + return call_user_func_array( + $this->actions[$page][$action], + $callableParamaters + ); } public function setBatchAction(string $page, string $action, string $label, callable $callback): self diff --git a/src/core/Resources/views/admin/crud/edit.html.twig b/src/core/Resources/views/admin/crud/edit.html.twig index 19d0c3d..7f1f152 100644 --- a/src/core/Resources/views/admin/crud/edit.html.twig +++ b/src/core/Resources/views/admin/crud/edit.html.twig @@ -24,7 +24,7 @@ {% endif %} - {% if configuration.action(context, 'show', true) %} + {% if configuration.action(context, 'show', true, [entity]) %} {{ configuration.actionTitle(context, 'show', 'Show')|trans|build_string(entity) }} @@ -42,7 +42,7 @@ {% set header_actions_dropdown_menu = '' %} {% endif %} - {% if configuration.action(context, 'delete', true) %} + {% if configuration.action(context, 'delete', true, [entity]) %} {% set item %} diff --git a/src/core/Resources/views/admin/crud/show.html.twig b/src/core/Resources/views/admin/crud/show.html.twig index a4fcaed..88ed3f7 100644 --- a/src/core/Resources/views/admin/crud/show.html.twig +++ b/src/core/Resources/views/admin/crud/show.html.twig @@ -24,7 +24,7 @@ {% endif %} - {% if configuration.action(context, 'edit', true) %} + {% if configuration.action(context, 'edit', true, [entity]) %}