Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitef5d811

Browse files
committed
minor#20967 [Workflow] Document custom workflow definition validator (ker0x)
This PR was merged into the 7.3 branch.Discussion----------[Workflow] Document custom workflow definition validatorFix#20950Commits-------e0fcd1c [Workflow] Document custom workflow definition validator
2 parentsef9c945 +e0fcd1c commitef5d811

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

‎workflow.rst

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,6 +1306,85 @@ In Twig templates, metadata is available via the ``workflow_metadata()`` functio
13061306
</ul>
13071307
</p>
13081308

1309+
Adding Custom Definition Validators
1310+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1311+
1312+
Sometimes, you may want to add custom logics to validate your workflow definition.
1313+
To do this, you need to implement the
1314+
:class:`Symfony\\Component\\Workflow\\Validator\\DefinitionValidatorInterface`::
1315+
1316+
namespace App\Workflow\Validator;
1317+
1318+
use Symfony\Component\Workflow\Definition;
1319+
use Symfony\Component\Workflow\Exception\InvalidDefinitionException;
1320+
use Symfony\Component\Workflow\Validator\DefinitionValidatorInterface;
1321+
1322+
final class BlogPublishingValidator implements DefinitionValidatorInterface
1323+
{
1324+
public function validate(Definition $definition, string $name): void
1325+
{
1326+
if (!$definition->getMetadataStore()->getMetadata('title')) {
1327+
throw new InvalidDefinitionException(sprintf('The workflow metadata title is missing in Workflow "%s".', $name));
1328+
}
1329+
}
1330+
}
1331+
1332+
Once your definition validator is implemented, you can configure your workflow to use
1333+
it:
1334+
1335+
..configuration-block::
1336+
1337+
..code-block::yaml
1338+
1339+
# config/packages/workflow.yaml
1340+
framework:
1341+
workflows:
1342+
blog_publishing:
1343+
# ... previous configuration
1344+
1345+
definition_validators:
1346+
-App\Workflow\Validator\BlogPublishingValidator
1347+
1348+
..code-block::xml
1349+
1350+
<!-- config/packages/workflow.xml-->
1351+
<?xml version="1.0" encoding="UTF-8" ?>
1352+
<containerxmlns="http://symfony.com/schema/dic/services"
1353+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
1354+
xmlns:framework="http://symfony.com/schema/dic/symfony"
1355+
xsi:schemaLocation="http://symfony.com/schema/dic/services https://symfony.com/schema/dic/services/services-1.0.xsd
1356+
http://symfony.com/schema/dic/symfony https://symfony.com/schema/dic/symfony/symfony-1.0.xsd"
1357+
>
1358+
<framework:config>
1359+
<framework:workflowname="blog_publishing">
1360+
<!-- ... previous configuration-->
1361+
<framework:definition-validators>App\Workflow\Validator\BlogPublishingValidator</framework:definition-validators>
1362+
</framework:workflow>
1363+
</framework:config>
1364+
</container>
1365+
1366+
..code-block::php
1367+
1368+
// config/packages/workflow.php
1369+
use Symfony\Config\FrameworkConfig;
1370+
1371+
return static function (FrameworkConfig $framework): void {
1372+
$blogPublishing = $framework->workflows()->workflows('blog_publishing');
1373+
// ... previous configuration
1374+
1375+
$blogPublishing->definitionValidators([
1376+
App\Workflow\Validator\BlogPublishingValidator::class
1377+
]);
1378+
1379+
// ...
1380+
};
1381+
1382+
The ``BlogPublishingValidator`` definition validator will be executed during the container compilation.
1383+
1384+
..versionadded::7.3
1385+
1386+
Support for defining custom workflow definition validators was introduced in Symfony 7.3.
1387+
13091388
Learn more
13101389
----------
13111390

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp