fix error array

This commit is contained in:
2025-09-21 20:34:17 +05:00
parent c9280dda70
commit dd8bf34c6b

View File

@@ -512,6 +512,11 @@
? $this->_eval2var('?>' . $field['defaultval'] . '<?')
: $field['defaultval']);
// Убедитесь, что $fld_val является массивом
if (!is_array($fld_val)) {
$fld_val = [$fld_val]; // Преобразуем в массив
}
$attributes = trim($field['attributes']);
$this->form['fields'][$field_id]['is_used'] = true;
@@ -521,78 +526,78 @@
switch ($field['type'])
{
case 'input':
$input = '<input ' . (strpos(strtolower($attributes),'type=') === false ? ' type="text" ' : ' ') . '
name="form-' . $alias_id . '[' . $field['id'] . ']"
' . (strpos(strtolower($attributes),'value=') === false ? ' value="' . ($field['title'] == 'captcha' ? '' : htmlspecialchars($fld_val,ENT_QUOTES)) . '" ' : ' ') . ' ' . $attributes . '>';
break;
case 'input':
$input = '<input ' . (strpos(strtolower($attributes), 'type=') === false ? ' type="text" ' : ' ') . '
name="form-' . $alias_id . '[' . $field['id'] . ']"
' . (strpos(strtolower($attributes), 'value=') === false ? ' value="' . ($field['title'] == 'captcha' ? '' : htmlspecialchars($fld_val[0], ENT_QUOTES)) . '" ' : ' ') . ' ' . $attributes . '>';
break;
case 'textarea':
$input = '<textarea name="form-' . $alias_id . '[' . $field['id'] . ']" ' . $attributes . '>' . htmlspecialchars($fld_val,ENT_QUOTES) . '</textarea>';
break;
case 'textarea':
$input = '<textarea name="form-' . $alias_id . '[' . $field['id'] . ']" ' . $attributes . '>' . htmlspecialchars($fld_val[0], ENT_QUOTES) . '</textarea>';
break;
case 'select':
$input = '<select name="form-' . $alias_id . '[' . $field['id'] . ']" ' . $attributes . '>';
foreach ($field['setting'] as $val => $title)
{
$input .= '<option value="' . $val . '"' . ($val == $fld_val ? ' selected="selected"' : '') . '>' . (is_array($title) ? $title['name'] : $title) . '</option>';
}
$input .= '</select>';
break;
case 'select':
$input = '<select name="form-' . $alias_id . '[' . $field['id'] . ']" ' . $attributes . '>';
foreach ($field['setting'] as $val => $title) {
$selected = in_array($val, $fld_val) ? ' selected="selected"' : '';
$input .= '<option value="' . $val . '"' . $selected . '>' . (is_array($title) ? $title['name'] : $title) . '</option>';
}
$input .= '</select>';
break;
case 'multiselect':
$input = '<select multiple="multiple" name="form-' . $alias_id . '[' . $field['id'] . '][]" ' . $attributes . '>';
foreach ($field['setting'] as $val => $title)
{
$input .= '<option value="' . $val . '"' . (in_array($val,$fld_val) ? ' selected="selected"' : '') . '>' . $title . '</option>';
}
$input .= '</select>';
break;
case 'multiselect':
$input = '<select multiple="multiple" name="form-' . $alias_id . '[' . $field['id'] . '][]" ' . $attributes . '>';
foreach ($field['setting'] as $val => $title) {
$selected = in_array($val, $fld_val) ? ' selected="selected"' : '';
$input .= '<option value="' . $val . '"' . $selected . '>' . $title . '</option>';
}
$input .= '</select>';
break;
case 'checkbox':
$input = '
<input type="hidden" name="form-' . $alias_id . '[' . $field['id'] . ']" value="0">
<input type="checkbox" name="form-' . $alias_id . '[' . $field['id'] . ']"' . ($fld_val ? ' checked="checked"' : '') . ' value="1" ' . $attributes . '>';
break;
case 'checkbox':
$input = '
<input type="hidden" name="form-' . $alias_id . '[' . $field['id'] . ']" value="0">
<input type="checkbox" name="form-' . $alias_id . '[' . $field['id'] . ']"' . ($fld_val[0] ? ' checked="checked"' : '') . ' value="1" ' . $attributes . '>';
break;
case 'file':
$input = '<input type="file" name="form-' . $alias_id . '[' . $field['id'] . ']" ' . $attributes . '>';
break;
case 'file':
$input = '<input type="file" name="form-' . $alias_id . '[' . $field['id'] . ']" ' . $attributes . '>';
break;
case 'doc':
$input = '<select name="form-' . $alias_id . '[' . $field['id'] . ']" ' . $attributes . '>';
$docs = $this->_docs($field['setting']);
foreach ($docs as $val => $title)
{
$input .= '<option value="' . $val . '"' . ($val == $fld_val ? ' selected="selected"' : '') . '>' . $title . '</option>';
}
$input .= '</select>';
break;
case 'doc':
$input = '<select name="form-' . $alias_id . '[' . $field['id'] . ']" ' . $attributes . '>';
$docs = $this->_docs($field['setting']);
foreach ($docs as $val => $title) {
$selected = ($val == $fld_val[0]) ? ' selected="selected"' : '';
$input .= '<option value="' . $val . '"' . $selected . '>' . $title . '</option>';
}
$input .= '</select>';
break;
case 'multidoc':
$input = '<select multiple="multiple" name="form-' . $alias_id . '[' . $field['id'] . '][]" ' . $attributes . '>';
$docs = $this->_docs($field['setting']);
foreach ($docs as $val => $title)
{
$input .= '<option value="' . $val . '"' . (in_array($val,$fld_val) ? ' selected="selected"' : '') . '>' . $title . '</option>';
}
$input .= '</select>';
break;
case 'multidoc':
$input = '<select multiple="multiple" name="form-' . $alias_id . '[' . $field['id'] . '][]" ' . $attributes . '>';
$docs = $this->_docs($field['setting']);
foreach ($docs as $val => $title) {
$selected = in_array($val, $fld_val) ? ' selected="selected"' : '';
$input .= '<option value="' . $val . '"' . $selected . '>' . $title . '</option>';
}
$input .= '</select>';
break;
}
// вставляем поле в шаблон поля
$return = trim($field['tpl']) > ''
? str_replace('[tag:fld]',$input,$field['tpl'])
: $input;
// Вставляем поле в шаблон поля
$return = trim($field['tpl']) > ''
? str_replace('[tag:fld]', $input, $field['tpl'])
: $input;
// парсим теги названия и id
$return = str_replace(array(
'[tag:id]',
'[tag:title]',
), array(
$field['id'],
'[tag:title:' . $field_id . ']',
), $return);
// Парсим теги названия и id
$return = str_replace(array(
'[tag:id]',
'[tag:title]',
), array(
$field['id'],
'[tag:title:' . $field_id . ']',
), $return);
// если попытка отправить форму, обрабатываем валидацию и пустоту
if ($this->form['is_submited'])