This came up as an idea in https://github.com/backdrop/backdrop-issues/issues/5348#issuecomment-100...

@quicksketch

This issue ... may also be helpful if we were to ever add a server-side conditional system to replace #states. By separating out the required message into its own property, we could conditionally display the required message without executing the entire form _validate() handler.

The #states property is a front-end only implementation. The lack of any server-side processing means any hidden fields cannot be required, or special validation handlers need to be added that validate field requireness manually.

Proposal

Introduce a new Form API property for designating conditional processing of parts of a form. This property would hide/show elements on the front end (like #states does already), but would also conditionally skip processing for hidden parts of the form. Hidden parts of the form would skip:

  • Processing of the #required attribute on hidden fields
  • Processing of #element_validate handlers on hidden fields
  • Remove any values from $form_state['values'] for hidden fields
GitHub Issue #: 
5750