Добавление новой ноды в кастомном материале при сохранении формы

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

Аватар пользователя pawaptz pawaptz 25 марта 2014 в 9:05

Здравствуйте. Есть кастомный тип материала К1. Надо, чтобы по сабмиту соответствующей формы К1` создавалась новая нода.

Подскажите самое лучшее решение без реализации через хуки, а тока средствами модулей.

Комментарии

Аватар пользователя InternetDevels.com InternetDevels.com 25 марта 2014 в 15:05

Пока что непонятно, чем создана ваша форма.

Но если вы ее сделали средставми модуля Webform, тогда ваша проблема решаема. Нужно еще поставить модуль Rules и Webform rules.
Сначала создаете форму с нужными полями, потом делаете новый рул. Где ивент будет "After a webform has been submitted", условие - имя вышей формы, а в действиях - создание нового ентити типа ноды К1.

Аватар пользователя pawaptz pawaptz 25 марта 2014 в 16:09

InternetDevels.com wrote:
Пока что непонятно, чем создана ваша форма.

Но если вы ее сделали средставми модуля Webform, тогда ваша проблема решаема. Нужно еще поставить модуль Rules и Webform rules.
Сначала создаете форму с нужными полями, потом делаете новый рул. Где ивент будет "After a webform has been submitted", условие - имя вышей формы, а в действиях - создание нового ентити типа ноды К1.

Да, спасибо за ответ. Сделал как Вы сказали, соответственно сохранять почему то не хочет ноду. В связи с этим вопрос, а как он поймёт какие поля (формы) мапить на какие поля ноды?

И ещё если можно маленький вопрос, если всё таки делать в собственном модуле, делаю так
1. переопределяю сабмит дефолтной формы на свой $form['#submit'] = array('XXX_submission_function');
2.
В функции function XXX_add_submission_function($form, &$form_state){....
уже соответственно выуживаю данные и создаю ноду с помощью АПИ.
Но вот незадача, почему то в form_state нет ассоц. массива значений, не знаете, почему??

Аватар пользователя InternetDevels.com InternetDevels.com 27 марта 2014 в 12:06

«Да, спасибо за ответ. Сделал как Вы сказали, соответственно сохранять почему то не хочет ноду. В связи с этим вопрос, а как он поймёт какие поля (формы) мапить на какие поля ноды?»

Всегда пожалуйста) Нужно сделать компонент типа Рул, и там выбрать действия: отношение каждого поля веб-формы к соотвествующему полю ноды.

«И ещё если можно маленький вопрос, если всё таки делать в собственном модуле, делаю так
1. переопределяю сабмит дефолтной формы на свой $form['#submit'] = array('XXX_submission_function');
2.
В функции function XXX_add_submission_function($form, &$form_state){....
уже соответственно выуживаю данные и создаю ноду с помощью АПИ.
Но вот незадача, почему то в form_state нет ассоц. массива значений, не знаете, почему??»

Возможно, вы тут только ошиблись, но переопределили функцию с названием "XXX_submission_function", а ждете результат в "XXX_add_submission_function".
Также, вы стерли стандартую функцию сабмита такой вот записью:
$form['#submit'] = array('XXX_submission_function');
Лучше написать так:
$form['#submit'][] = 'XXX_submission_function';
Так будет работать дефолтный сабмит от вебформы и ваш. Результаты из формы будут содержаться в $form_state['values]