- Issue created by @jcandan
Modules need to evaluate Conditional Fields (CF) dependencies on the server to mirror client-side #states
logic (e.g., to enforce "required on publish" rules during validation). Today, the evaluator logic lives in non-public code, so integrators must either:
This creates drift, makes testing harder, and discourages clean integrations (e.g., require_on_publish + Paragraphs + CF). A small, public API would let modules evaluate CF rules without duplication and remain in sync with CF behavior.
require_on_publish
) is currently active. Expose a public, stable, server-side evaluator:
conditional_fields.state_evaluator
ConditionalFieldsStateEvaluatorInterface::evaluateDependency(string $context, $values, array $options): bool
empty
/!empty
; checked
/!checked
; _none
handling; int/string casting).This gives integrators (e.g., require_on_publish) a dependable way to mirror CF decisions on the server without duplicating logic.
- [ ] Add interface + service and wire it in *.services.yml
.
- [ ] Refactor existing internal calls to use the service (where convenient).
- [ ] Add unit tests for evaluator edge cases.
- [ ] Document example usage for consumers.
- [ ] Changelog/README note about the new public API.
None.
State evaluator service: a public service that evaluates Conditional Fields dependencies server-side.
conditional_fields.state_evaluator
. ConditionalFieldsStateEvaluatorInterface
with evaluateDependency()
. None.
Conditional Fields now exposes a public state evaluator service for server-side dependency checks. Modules can call conditional_fields.state_evaluator::evaluateDependency()
to mirror #states
behavior during validation (e.g., enforcing “required on publish” rules). No UI or configuration changes required.
Active
4.0
Compatibility w/ other modules