Skip to content

Conditionally hidden fields still submit values, preventing use of sometimes, required_if, etc. rules #5092

@jesseleite

Description

@jesseleite

Bug description

  • Conditionally hidden fields still submit values, preventing use of sometimes, required_if, etc. validation rules.

How to reproduce

  • Add a conditionally hidden field with sometimes|required validation.
    -
      handle: last_name
      field:
        type: text
        if:
          first_name: 'not empty'
        validate:
          - sometimes
          - required
  • This field should only show if first_name is not empty, and should only validate as required if visible / present in the request.

Versions

Statamic 3.2.29 Pro
Laravel 8.78.1
PHP 7.4.25

Additional details

  • The issue here is that hidden field values are always submitted, despite whether or not they are visible, so rules like sometimes and required_if don't work as expected in the CP.
    • This is already fixed for front-end form conditions in Frontend form field conditions ... #4949 👍
    • We could port this fix to the CP publish forms by doing the following:
      • Ensure we don't submit hidden field values in publish form payload in JS.
      • Set ->setTrackMissingValues(true) on the submitted fields before adding request data for validation.
        $fields
            ->setTrackMissingValues(true)
            ->addValues($request->all())
            ->validate()

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions