Skip to content

Commit b2f740a

Browse files
committed
feat: improve dialog box configurator validation in HasDialogBox
- Ensure the referenced configurator service exists and throw an exception if not. - Enforce that configurators implement the `DialogBoxConfigurator` interface, raising an exception when the type is invalid.
1 parent 2d8cda9 commit b2f740a

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

src/HasDialogBox.php

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,28 @@ final public function getEditableDialogBoxConfiguration(Editable $area, ?Info $i
2020

2121
$this->buildDialogBox($builder, $area, $info);
2222

23-
if ($configurator = $info?->getParam('dialogBoxConfigurator')) {
24-
if ($this->container->has($configurator)) {
25-
$this->container->get($configurator)->configureDialogBox($builder, $area, $info);
23+
if ($configuratorServiceName = $info?->getParam('dialogBoxConfigurator')) {
24+
if (!$this->container->has($configuratorServiceName)) {
25+
throw new \LogicException(\sprintf(
26+
'The service "%s" referenced via "params.%s.dialogBoxConfigurator" does not exist.',
27+
$configuratorServiceName,
28+
$info->getId(),
29+
));
2630
}
31+
32+
$configurator = $this->container->get($configuratorServiceName);
33+
34+
if (!$configurator instanceof DialogBoxConfigurator) {
35+
throw new \LogicException(\sprintf(
36+
'The service "%s" referenced via "params.%s.dialogBoxConfigurator" must implement "%s", "%s" given.',
37+
$configuratorServiceName,
38+
$info->getId(),
39+
DialogBoxConfigurator::class,
40+
$configurator::class,
41+
));
42+
}
43+
44+
$configurator->configureDialogBox($builder, $area, $info);
2745
}
2846

2947
return $builder->build();

0 commit comments

Comments
 (0)