-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Short description of the issue
@ryancramerdesign - this is a weird one. Originally reported by @Toutouwai here: adrianbj/TracyDebugger#47
When Tracy's RequestInfo panel is loaded, you get a warning about deleting options when adding options to a new Select Options field that does not yet have any options.
Turns out it's because the RequestInfo panel calls $field->getExportData()
and if I remove that call, the problem goes away.
Optional: Screenshots/Links that demonstrate the issue
For some reason on my production servers I see the same issue as @Toutouwai, but on my local dev, I actually get this error stack:
ProcessWire\WireException: value must be string in /Users/ajones/Sites/ecoreportcard/wire/modules/Fieldtype/FieldtypeOptions/SelectableOptionManager.php:257
Stack trace:
#0 /Users/ajones/Sites/ecoreportcard/wire/modules/Fieldtype/FieldtypeOptions/SelectableOptionManager.php(419): ProcessWire\SelectableOptionManager->optionsStringToArray(NULL)
#1 /Users/ajones/Sites/ecoreportcard/wire/modules/Fieldtype/FieldtypeOptions/SelectableOptionConfig.php(86): ProcessWire\SelectableOptionManager->setOptionsStringLanguages(Object(ProcessWire\Field), Array, false)
#2 /Users/ajones/Sites/ecoreportcard/wire/modules/Fieldtype/FieldtypeOptions/SelectableOptionConfig.php(202): ProcessWire\SelectableOptionConfig->process(Object(ProcessWire\InputfieldTextarea))
#3 /Users/ajones/Sites/ecoreportcard/wire/modules/Fieldtype/FieldtypeOptions/FieldtypeOptions.module(485): ProcessWire\SelectableOptionConfig->getConfigInputfields()
#4 /Users/ajones/Sites/ecoreportcard/wire/core/Wire.php(383): ProcessWire\FieldtypeOptions->___getConfigInputfields(Object(ProcessWire\Field))
#5 /Users/ajones/Sites/ecoreportcard/wire/core/WireHooks.php(823): ProcessWire\Wire->_callMethod('___getConfigInp...', Array)
#6 /Users/ajones/Sites/ecoreportcard/wire/core/Wire.php(450): ProcessWire\WireHooks->runHooks(Object(ProcessWire\FieldtypeOptions), 'getConfigInputf...', Array)
#7 /Users/ajones/Sites/ecoreportcard/wire/core/Fieldtype.php(347): ProcessWire\Wire->__call('getConfigInputf...', Array)
#8 /Users/ajones/Sites/ecoreportcard/wire/modules/Fieldtype/FieldtypeOptions/FieldtypeOptions.module(408): ProcessWire\Fieldtype->___exportConfigData(Object(ProcessWire\Field), Array)
#9 /Users/ajones/Sites/ecoreportcard/wire/core/Wire.php(386): ProcessWire\FieldtypeOptions->___exportConfigData(Object(ProcessWire\Field), Array)
#10 /Users/ajones/Sites/ecoreportcard/wire/core/WireHooks.php(823): ProcessWire\Wire->_callMethod('___exportConfig...', Array)
#11 /Users/ajones/Sites/ecoreportcard/wire/core/Wire.php(450): ProcessWire\WireHooks->runHooks(Object(ProcessWire\FieldtypeOptions), 'exportConfigDat...', Array)
#12 /Users/ajones/Sites/ecoreportcard/wire/core/Field.php(482): ProcessWire\Wire->__call('exportConfigDat...', Array)
#13 /Users/ajones/Sites/ecoreportcard/site/assets/cache/FileCompiler/site/modules/TracyDebugger/panels/RequestInfoPanel.php(110): ProcessWire\Field->getExportData()
#14 /Users/ajones/Sites/ecoreportcard/site/assets/cache/FileCompiler/site/modules/TracyDebugger/tracy-2.7.x/src/Tracy/Bar/Bar.php(150): RequestInfoPanel->getPanel()
#15 /Users/ajones/Sites/ecoreportcard/site/assets/cache/FileCompiler/site/modules/TracyDebugger/tracy-2.7.x/src/Tracy/Bar/Bar.php(122): Tracy\Bar->renderPanels('-r0')
#16 /Users/ajones/Sites/ecoreportcard/site/assets/cache/FileCompiler/site/modules/TracyDebugger/tracy-2.7.x/src/Tracy/Bar/Bar.php(94): Tracy\Bar->renderHtml('redirect', '-r0')
#17 /Users/ajones/Sites/ecoreportcard/site/assets/cache/FileCompiler/site/modules/TracyDebugger/tracy-2.7.x/src/Tracy/Debugger/Debugger.php(293): Tracy\Bar->render()
#18 [internal function]: Tracy\Debugger::shutdownHandler()
#19 {main}
Basically the issue seems to be that calling $field->getExportData()
before / during the setting of the selectable options messes with $deletedOptionIDs
, which on quick inspection is originally coming from the array_merge()
here: https://github.com/processwire/processwire/blob/51629cdd5f381d3881133baf83e1bd2d9306f867/wire/core/Field.php#L457-L460
Please let me know if there is anything additional we can provide, but if you follow the steps in @Toutowai's screencast above, you should see either the described behavior, or the error in the Tracy debug bar.