digitalwand.admin_helper icon indicating copy to clipboard operation
digitalwand.admin_helper copied to clipboard

Не сохраняются введеные значения в случае ошибки

Open 111ypuk opened this issue 8 years ago • 2 comments

в AdminEditHelper.php в

else {
                    unset($this->data);
                    $this->data = $_REQUEST['FIELDS']; //Заполняем, чтобы в случае ошибки сохранения поля не были пустыми
                }

нало поправить т.к. например при сохранение с виджетом HL ИБ, веденные значения не хранятся в FIELDS. Или вообще убрать

111ypuk avatar Jun 02 '16 08:06 111ypuk

Не прав был, проблема в другом, у input элементов HLIBlockFieldWidget атрибут namе равен коду пользовательского поля (name="UF_XYZ"),а не FIELDS['UF_XYZ'], как требуется для предыдущего коментария. Для правильной работы надо в HLIBlockFieldWidget::getEditHtml() перед print $USER_FIELD_MANAGER->GetEditFormHTML($bVarsFromForm, $GLOBALS[$this->getCode()], $info); добавить (для файла надо оставить как есть, а то при редактирование жалуется)

if ( $info['USER_TYPE_ID']!='file') {
            $info['FIELD_NAME']='FIELDS['.$info['FIELD_NAME'].']';
}
//для  CUserTypeBoolean, а то тоже не созраняются
if ($info['ENTITY_VALUE_ID'] < 1) $info['ENTITY_VALUE_ID'] = 1;

111ypuk avatar Sep 06 '16 06:09 111ypuk

  • [ ] Не сохраняются когда есть значение первичного ключа,
    т.е. мы редактируем запись, а не создаём новую: lib/helper/AdminEditHelper.php:142
  • [ ] Не сохраняются для множественных полей,
    виджеты с MULTIPLE => 'Y' передают значения в $_REQUEST[$code], тогда как AdminEditHelper собирает их только из $_REQUEST[FIELDS]

С множественными как-то странно, кажется, они всегда берут данные из БД, но не с формы: StringWidget.php:99.

Кроме того, есть виджеты, использующие $_REQUEST напрямую вместо $this->data (те, которым нужно несколько ключей в запросе и/или изменить их имена не позволяет используемое API битрикса (HLIBlockFieldWidget, VisualEditorWidget). Порядку это не способствует, конечно.

nook-ru avatar Dec 18 '17 13:12 nook-ru