cms icon indicating copy to clipboard operation
cms copied to clipboard

Conditionals on Field Not Persisting Correctly

Open daylightstudio opened this issue 2 years ago • 5 comments

Bug description

I wanted to setup multiple conditions on a field so that it would not appear on two different templates. I added the additional condition but it wound up overwriting the previous conditions value and did not add the additional condition. This explains it better:

How to reproduce

  1. Went to fields sets to edit
  2. Clicked on Conditionals for the field I wanted to edit
  3. Added the extra condition and clicked Finish
  4. Clicked saved on next screen
  5. Went back to Conditionals and it overwrote the value previous value with the new value and didn't persist my new condition

This link best explains the steps.

Logs

No response

Versions

Statamic 3.2.39 Pro Laravel 8.80.0 PHP 7.4.21 aryehraber/statamic-captcha 1.8.0 doublethreedigital/duplicator 2.2.0 rias/statamic-redirect 2.0.0 spatie/statamic-responsive-images 2.10.1 statamic/seo-pro 2.3.2

Installation

Fresh statamic/statamic site via CLI

Antlers Parser

No response

Additional details

No response

daylightstudio avatar May 06 '22 15:05 daylightstudio

This is also happening in v3.3.10.

The underlying issue is that the conditions are keyed by the referenced field and so only one condition is stored per field:

Bildschirmfoto 2022-05-07 um 10 56 41

staudenmeir avatar May 07 '22 09:05 staudenmeir

Looks like this is a valid problem, but at the moment we don't support having multiple conditions targeting the same field.

jasonvarga avatar May 07 '22 11:05 jasonvarga

I just got bitten by this. Is this only when you're targeting the same field?

robdekort avatar Jun 30 '22 09:06 robdekort

Yes, you can only set one condition per field.

We should probably add validation to the conditions builder UX to prevent users from trying this. We could also possibly look into adding && and || operators, so you could do things like: some_field: 'not bar && not foo'.

Until then though, I would suggest using custom JS conditions, as they are very powerful for more complex logic: https://statamic.dev/conditional-fields#custom-logic.

jesseleite avatar Jun 30 '22 11:06 jesseleite

Ah yes. Any of those would be nice. The UI suggests it’s supported indeed. I could work around be reversing the logic in this case 👍.

Thanks for clarifying.

robdekort avatar Jun 30 '22 15:06 robdekort