You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As you can see, "Jack Daniels" is set as the default value.
The first time I create an entry, and add the matrix block, the dropdown appears and correctly has "Jack Daniels" selected.
Let's say I change the value to "Jim Beam", and hit save and continue editing.
When the publishing page is refreshed and the matrix block re-rendered, the Dropdown is erroneously set back to the default "Jack Daniels". However if I check in the DB, the correct value, jim, is being stored correctly.
if ($this->isFresh($element) ) :
foreach ($options as $key => $option) :
if (!empty($option['default'])) :
$value = $option['value'];
endif;
endforeach;
endif;
For some reason the element is being considered "fresh", yet $value was passed to the method. This seems to be an identical issue I encountered in issue #37, for which I raised a pull request #38, which is to change that conditional statement to also check if $value is non-null, e.g.:
if ( ! $value && $this->isFresh($element) ) :
foreach ($options as $key => $option) :
if (!empty($option['default'])) :
$value = $option['value'];
endif;
endforeach;
endif;
As I quickly scan the source code, I'm sure that the other field types are afflicted with this same malady - in each case, the check for "freshness" isn't necessary is $value has been set.
It would really be great if this could be addressed soon. Not being able to set default values on the dropdown is a setback to crafting a user-friendly UX for my content editors. Let me know if you'd like me to issue a new PR that addresses this issue for all fieldtypes.
Thanks!
-John
Craft CMS 3.5.14
LJ Dynamic Fields 3.0.11
The text was updated successfully, but these errors were encountered:
Setup: I have a
Dropdown (dynamic)
field in a Matrix block, configured with the following options:As you can see, "Jack Daniels" is set as the default value.
The first time I create an entry, and add the matrix block, the dropdown appears and correctly has "Jack Daniels" selected.
Let's say I change the value to "Jim Beam", and hit save and continue editing.
When the publishing page is refreshed and the matrix block re-rendered, the Dropdown is erroneously set back to the default "Jack Daniels". However if I check in the DB, the correct value,
jim
, is being stored correctly.I have tracked it down to lines 53-59 in Dropdown.php of the method
Dropdown::normalizeValue()
:For some reason the element is being considered "fresh", yet
$value
was passed to the method. This seems to be an identical issue I encountered in issue #37, for which I raised a pull request #38, which is to change that conditional statement to also check if$value
is non-null, e.g.:As I quickly scan the source code, I'm sure that the other field types are afflicted with this same malady - in each case, the check for "freshness" isn't necessary is
$value
has been set.It would really be great if this could be addressed soon. Not being able to set default values on the dropdown is a setback to crafting a user-friendly UX for my content editors. Let me know if you'd like me to issue a new PR that addresses this issue for all fieldtypes.
Thanks!
-John
Craft CMS 3.5.14
LJ Dynamic Fields 3.0.11
The text was updated successfully, but these errors were encountered: