- Issue created by @jcandan
When require_on_publish
(ROP) is used with Paragraphs and Conditional Fields (CF), draft saves can incorrectly fail.
The client-side CF #states
marks a Paragraph subfield as “Required on Publish” only when a condition (e.g., a “Gate” checkbox) is true, but the server-side validator does not currently evaluate that CF state or the target publish intent from the submitted form. As a result, an empty Paragraph subfield can be treated as required during a draft save (not publishing), producing “required / required-on-publish” errors that should not block saving.
function MYMODULE_conditionalFieldsStates_alter(array &$states) {
$states['require_on_publish'] = t('Required on Publish');
}
require_on_publish.state_evaluator
) that, when CF is enabled and exposes a public evaluator service, uses it to evaluate CF rules on the server; otherwise fall back to a local shim.validateParagraphReferenceField()
, consult both the subfield’s ROP third-party flag and any CF rules where state === 'require_on_publish'
, evaluated against posted dependee values.warn_on_empty
is set.NotBlank
.validateParagraphReferenceField()
to honor CF state.None. Optionally, a Status report entry indicating “Conditional Fields integration: Service or Shim”.
State evaluator (shim/service): server-side helper to evaluate CF dependency rules for require_on_publish
.
New internal service in ROP (for example, require_on_publish.state_evaluator
) used by the validator. Public API of ROP remains unchanged.
None.
require_on_publish now optionally integrates with Conditional Fields to evaluate require_on_publish
rules on the server for Paragraph subfields. Draft saves no longer fail when those fields are empty; enforcement occurs only on publish. If Conditional Fields dependency evaluator service is not available, ROP uses a local shim. For conditional/ROP subfields, leave core “Required” unchecked and rely on ROP + CF.
Active
2.1
Code