FIXED!
Thanks Bob yes that's what I mean by referential integrity - perhaps a term from the days of COBOL and Duran Duran! mod_security only scans data coming in and isn't on my dev server, but great call thanks - I have wasted spent many days missing that. There's nothing in the MODx log, but Mark thank you your answer reminded me I've replicated this on my dev server so have access to server logs. Duh!!
But before I go into symptoms I have found the fix, thanks to your questions putting a bit more structure into my increasingly desperate diagnosis. Trying to be careful, and distracted by the error's dependence on a text or image TV too, I'd missed fixing some of the dropdown TVs..
This SQL fixes the problem, however for anyone copying the SQL do test the result - I've tried to make it broadly compatible but it assumes choices about how the new drop-down works which may not match your requirements:
update qstrv_site_tmplvars
set type='listbox',
properties='a:0:{}',
input_properties=
'a:7:{s:10:"allowBlank";s:4:"true";s:9:"listWidth";s:0:"";s:5:"title";s:0:"";s:9:"typeAhead";s:5:"false";s:14:"typeAheadDelay";s:3:"250";s:14:"forceSelection";s:4:"true";s:13:"listEmptyText";s:0:"";}',
output_properties='a:0:{}'
where type='dropdown';
This seems to be the most compatible equivalent in Revo (a restricted ExtJS select) to Evo's dropdown (a HTML select) but I'd welcome correction.
I did not need to duplicate the template or any TVs or anything else - just run this SQL to correct all dropdowns, which were presumably copied across by Provisioner. I believe this suggests a fix to Provisioner is in order. A very nice-to-have (imho, given it is software designed to accept plug-ins/extras) would be validation within MODx of those options that are stored in the database as text but could/should be foreign keys, such as modx_site_tmplvars.type.
The log shows:
[Sun Jan 19 08:28:46 2014] [error] [client 192.168.56.1] PHP Fatal error: Cannot redeclare class modTemplateVarInputRenderText in /media/pathto/core/model/modx/processors/element/tv/renders/mgr/input/text.class.php on line 10, referer: http://example.com/manager/?a=30&id=640
So this is being run twice:
<?php
/**
* @package modx
* @subpackage processors.element.tv.renders.mgr.input
*/
class modTemplateVarInputRenderText extends modTemplateVarInputRender {
public function getTemplate() {
return 'element/tv/renders/input/textbox.tpl';
}
}
return 'modTemplateVarInputRenderText';
Hence the unpredictable combination of two TVs rather than any predictable one or more. The type of the other TV is text, but last night I appeared to resolve the issue, so restored the database and started trying to find a sequence of steps, and another two TVs of different types (dropdown and image)
appeared to trigger the error.
[ed. note: technicaltitch last edited this post 10 years, 11 months ago.]