1

我知道当(例如)表单由于某种原因无法验证时,formItIsSelected 实用程序可以很好地将 Select 字段的值保留在表单中。但是,当从 MySQL 中的表中填充 Select 字段时,是否有人尝试过使用它?这肯定比填充静态值的 Select 字段更有用。

我在 modx 站点中有一个表单,与 formit 挂钩,其中的一个选择字段从 MySQL 中的表中动态检索值。当表单无法验证此特定字段时,用户选择的值将丢失。我的字段(在表单中)具有以下设置:

<select id="Field245" name="typeOfRelationship" class="field select medium" tabindex="4">[[!getRelationshipOptions? &selected=`[[!+fi.typeOfRelationship]]`]]</select>

和代码片段,它可以正常工作:

<?php if (!$modx->addPackage('contacts', MODX_CORE_PATH . 'components/contacts/model/')) {return 'Could not load xPDO model';}$current = $modx->getOption('selected', $scriptProperties, '');$output = [];$relationships= $modx->getCollection('RelationshipCodes');foreach ($relationships as $relationship) {$selected = $current == $relationship->get('codes') ? 'selected="selected' : '';$value=$relationship->get('descriptions');$output[] = '<option value="' . $relationship->get('descriptions') . '" ' . $selected . '>' . $relationship->get('descriptions') . '</option>';}return implode('', $output);

到目前为止,一切都很好。但是当我将 $output[] 行替换为:

 $output[] = '<option value="' .$value . '" '. '[[!+fi.typeOfRelationship:FormItIsSelected=' ."'".$value. "'". $selected. ']]>' . $value . '</option>';

这失败了!它不会出错,但当表单验证失败时,它仍然允许 Select 字段丢失其设置。你看到问题了吗?或者 FormItIsSelected 在这种情况下可能不起作用?

非常感谢

4

0 回答 0