Closed asnenne closed 2 years ago
Не очень понял. Как повторить проблему?
Добавить поле файл в форму компонента в админке и попробовать загрузить файл в этом поле.
<?php class formControllerAction extends cmsForm {
public function init($do, $id) {
return array(
'basic' => array(
'title' => '',
'type' => 'fieldset',
'childs' => array(
new fieldFile('file_x', array(
'title' => 'Файл'
))
)
)
);
}
}
После этого открыть форму, выбрать в поле файл и сохранить.
Никаких проблем
В экшенах контроллеров в админке всё так же работает без проблем, см. "Генератор RSS"
Полагаю, что вы при сохранении формы сохраняете в json, а потом, при выборке из базы конвертируете в Ямл.
Вот такая вот картина получается. Наверное я на самом деле что-то делаю не правильно. Полагаю, что вы при сохранении формы сохраняете в json Я просто добавил форму и просто ее пытаюсь сохранить))
https://github.com/instantsoft/icms2/blob/master/system/core/model.php#L2227
Есть четыре функции: две для ямл и две для json. По умолчанию массивы с формы сохраняются в ямле. Но могут сохраняться и в json https://github.com/instantsoft/icms2/blob/master/system/core/formfield.php#L502
Вот такая вот картина получается. Наверное я на самом деле что-то делаю не правильно.
Полагаю, да)
Я просто добавил форму и просто ее пытаюсь сохранить
Она и сохраняется.
В общем без всего кода сказать сложно, что там у вас.
Не пытался я сохранить в yaml
if ($do == 'add') {
$this->model->insert('sales_versions', $ver, true);
} else {
$this->model->update('sales_versions', $id, $ver, false, true);
}
Обычный код, ничего особенного)) И такая же беда с полем Изображение. Но там костылями выкрутился, а с файлом не получается ничего.
Не пытался я сохранить в yaml
Вы сохраняете в JSON.
Уберите последние аргументы и всё у вас будет ок.
Этот аргумент отвечает за перевод в yaml? Я знал, что истина где-то рядом)))
Спасибо.
Сообщения почищу, пожалуй))
Этот аргумент отвечает за перевод в yaml
Нет, за json. Еще раз: по умолчанию массивы в ямл. Но можно и в json, используя аргумент $array_as_json.
Да, в json
Но не всё хорошо)). Файл загрузился, при редактировании он в форме. Но при повторном сохранении пропадает.
В общем-то в этом и была проблема. Когда я его в json перевел, я его назад потом вернул)) А вот повторно сохранить так и не смог.
Файл загрузился, при редактировании он в форме. Но при повторном сохранении пропадает.
Это баг, да. Починю.
С изображением нормально всё теперь, а вот с файлом беда))
/system/core/backend.php
в public function actionOptions(){
$options = array_merge($options, $form->parse($this->request, true));
заменить на
$options = array_merge($options, $form->parse($this->request, true, $options));
Спасибо. Но не помогло))
Но не помогло))
Я про общие настройки компонентов :)
В вашем случае
$ver = $form->parse($this->request, true, $ver);
Т.е. при редактировании в экшене в parse третьим аргументом надо передавать существующие данные.
Помогло, спасибо!)) Если добавить вот это
Еще раз спасибо!))
Используемая версия InstantCMS: 2.14.2
Не работает поле "Файл" в форме компонента в админке. Сохраняет данные в бд в json и дальше, при редактировании, выдает ошибку.
Перевел в yaml, сохраняет нормально. При редактировании поле заполнено. Но при повторном сохранении оно уже пустое.
Такая же беда с полем Изображение. Но оно при изменении формата на yaml работает нормально.
Предлагаю добавить возможность работать с этими полями из админки, чтобы не изобретать костыли.
Возможно я что-то делаю не так, документации-то нет совсем по этому поводу. Но проблема давняя и острая.
Спасибо.