Не работают поля типа файл в мультистеп форме

Главные вкладки

Аватар пользователя vector vector 21 июня 2012 в 15:02

Разбил форму регистрации и профиль пользователя на шаги.
Не загружается аватара, а у файловых полей не работает аякс (но файл загружается при сохранении формы)
Возможно, проблема заключается в нестандартном способе разбиения формы на шаги.
Нужно было сделать так, чтобы набор полей и разнесение их по шагам можно было делать в админке.
Первое - стандартная возможность друпала (профиль пользователя). Второе - использую модуль fieldgroup
Создание формы:
1. В hook_menu для адреса user/register прописал свой 'page callback'
2. В page callback просто return drupal_get_form('my_custom_form');
3. my_custom_form() :
- $register_form = drupal_get_form('user_register_form');
- потом копирую поля в свою форму: $form[$field_name] = $register_form[$field_name];
- return $form;

Поля копирую не все, а только текущего шага. Но это не важно. Важно то, что при таком создании формы файловые поля начинют глючить. Вообще-то глюки были и с другими полями, но их порешил, а вот с файлами и аватарой совсем беда. Возможно потому, что поле дважды проходит через drupal_get_form() и в нем что-то портиться. Сравнивал массивы, все глаза просмотрел - не могу понять что не так. Помогите. Чуть позже выложу урезанный вариант создания формы, чтобы можно было восоздать картину.

Комментарии

Аватар пользователя vector vector 21 июня 2012 в 18:27

ctools не могу по двум причинам:
1. форма уже сделана и она работает.
2. ctools рассматривал в самом начале и отказался (как и от стандартного способа), потому что нужно управлять полями через админку.
Поэтому приходится извращаться с вызовом форм и копированием полей. И вот что-то при этом портится в файловых полях. Чтобы воссоздать прецедент можно обойтись без шагов: просто вызвать форму регистрации, скопировать поле аватары в свою форму и вывести форму на страницу. Щас набросаю код.

Аватар пользователя vector vector 10 ноября 2015 в 11:48

В аттаче модуль. После установки заходим в user/1/edit и там будет в локал меню "Test Form".
Так вот. Все сохраняется, кроме аватары. Я распечатал $form_state в hook_validate() Вроде бы, можно придраться к form_build_id
http://clip2net.com/s/23pPe
но я, кажись, менял его когда-то... попробую еще раз. И буду признателен, если кто-нить проникнеться проблемой и поможет вывести аватару на читую воду. С файловыми полями тоже проблема (если добавить в профиль), но аватара сейчас важнее. Горю на работе.
Спасибо.
p.s.: на странице формы сыплются нотисы
Notice: Undefined index: #entity in options_field_widget_form() (line 83 of /home/drupal-jobs/domains/omp-dev.drupal-jobs.com/public_html/modules/field/modules/options/options.module).
но я думаю, это к делу не относится.