как передать id в форму обратной связи (hook_form_alter)

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

Аватар пользователя katityki katityki 7 февраля 2018 в 12:25

Добрый день!
Помогите разобраться, дать совет..

Есть стандартная вебформа которая находится в каждой ноде определенного типа материала
Нода состоит из полей содержащих термины, информацию и т.д.
На данный момент стандартными способами форма может отправить мне только введенных в поля формы значения и несколько глобальных параметров как название сайта и адрес страници
http://prntscr.com/iba11f
А мне нужно получить еще и другую информацию - ту, что содержит нода(заголовок ноды, поля терминов, поле цены и др)

Я так понимаю что каким то образом мне надо использовать hook_form_alter в который передать значения (наверное id ноды)?!

Действия:
1)Создаю скрытое поле
http://prntscr.com/iba62b

2) иду в файл system.api.php и ищу там hook_form_alter (!?)
http://prntscr.com/iba711

что в нем нужно дописать что бы в скрытое поле передавалось нужное значение поля?

function hook_form_alter(&$form, &$form_state, $form_id) {
if (isset($form['type']) && $form['type']['#value'] . '_node_settings' == $form_id) {
$form['workflow']['upload_' . $form['type']['#value']] = array(
'#type' => 'radios',
'#title' => t('Attachments'),
'#default_value' => variable_get('upload_' . $form['type']['#value'], 1),
'#options' => array(t('Disabled'), t('Enabled')),
);
}
}

Комментарии

Аватар пользователя ivnish ivnish 7 февраля 2018 в 12:59
1

Ни в коем случае ничего не нужно писать в system.api.php!!!

Вам нужно создать кастомный модуль, а в нем использовать хук:

<?php
function MYMODULE_form_alter(&$form, &$form_state$form_id) {
// ваш код
}
?>
Аватар пользователя katityki katityki 7 февраля 2018 в 13:16

тогда значит шаги такие:
1) в папке modules создаю папку "myform"
2) помещаю туда два файла myform.info (он обязателен?) и myform.module
3) в myform.module нужно поместить некий код?

Аватар пользователя adano adano 7 февраля 2018 в 12:59
1

Верно, form_alter - нужен. Webform должна отдавать данные о ноде - $form['#node']

katityki wrote:

иду в файл system.api.php и ищу там hook_form_alter (!?)
что в нем нужно дописать что бы в скрытое поле передавалось нужное значение поля?

Не надо ядро хакать, MYMODULE_form_alter или MYMODULE_form_id_form_alter