Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SuluConditionResolverBundle

Resolve PHP backed enums and class constants in Sulu visibleCondition and disabledCondition expressions.

Installation

composer require amoifr/sulu-condition-resolver-bundle

Usage

Use enum() and const() placeholders in your form XML definitions:

<!-- String backed enum -->
<property name="title" visibleCondition="status == enum(App\Enum\Status::ACTIVE)">

<!-- Int backed enum -->
<property name="priority_field" disabledCondition="priority == enum(App\Enum\Priority::HIGH)">

<!-- Class constant -->
<property name="draft_notice" visibleCondition="type == const(App\Entity\Page::TYPE_DRAFT)">

<!-- Multiple expressions -->
<property name="special" visibleCondition="status == enum(App\Enum\Status::ACTIVE) && priority == enum(App\Enum\Priority::HIGH)">

The bundle resolves these at metadata build time, producing clean JS-evaluable expressions like status == 'active'.

How it works

The bundle registers a FormMetadataVisitorInterface that:

  1. Traverses all form items (including sections and field types) recursively
  2. Detects enum(FQCN::CASE) and const(FQCN::CONST) in visibleCondition and disabledCondition
  3. Resolves them to their scalar values at metadata build time
  4. The frontend receives clean expressions it can evaluate as usual

Constraints

  • Enums must be backed enums (string or int)
  • Constants must resolve to scalar values (string, int, float, bool)
  • No service() support — metadata should not depend on runtime state

License

MIT

About

Resolve PHP enums and constants in Sulu visibleCondition/disabledCondition expressions

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages