Веб-форма Drupal, программно создающая составные компонентыPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Веб-форма Drupal, программно создающая составные компоненты

Сообщение Anonymous »

Я успешно создал собственный компонент веб-формы для определенного типа данных. Данные поступают в различные разделы, поэтому мне нужно создать дополнительные, но уже существующие типы компонентов, которые будут подкомпонентами моего пользовательского компонента.
По сути, я пытаюсь программно создать композицию компонентов веб-формы.
Моя проблема в том, что весь код выполняется успешно: я получаю сообщение о том, что мой пользовательский компонент создан, и получаю обратную связь о том, что мои подкомпоненты также были успешно созданы.
Однако, подкомпоненты не отображаются в моей веб-форме.


В тот момент, когда мой пользовательский компонент создается и вставляется в БД, я пытаюсь создать все необходимые подкомпоненты с помощью следующего кода:

Код: Выделить всё

function my_module_webform_component_insert($component){
if($component['type'] == 'my_component'){
$node = node_load($component['nid']);

$address_fields = array("my_sub_component1", "my_sub_component2");

foreach ($address_fields as $key => $address_field) {
//fetch next available component ID
$next_id_query = db_select('webform_component')->condition('nid', $component['nid']);
$next_id_query->addExpression('MAX(cid) + 1', 'cid');
$next_cid = $next_id_query->execute()->fetchField();

_create_sub_component($component['nid'], $address_field, $next_cid, $component['cid']);
}

}
}
Моя функция _create_sub_comComponent определена ниже:

Код: Выделить всё

function _create_sub_component($nid, $new_component, $cid, $pid){
$node = node_load($nid);

$processed_name  = str_replace(' ', '_', strtolower($new_component));
// Create the webform components array. Not sure if we need all these
// values, but let's be sure.
$component = array(
'cid' => (int)$cid,
'pid' => 0,#(int)$pid,
'nid' =>  (int)$node->nid,
// I don't trust the admin to make a key based on input :)
'form_key' => $processed_name,
'name' => $new_component,
// I want all lines to be numeric type component.
'type' => 'textfield',
'value' => '',
'extra' => array(),
'mandatory' => '0',
'weight' => 0,
'page_num' => 1,
);

array_push($node->webform['components'], $component);
node_save($node);

drupal_set_message("{$new_component} component successfully created in {$node->title}");
}
Я предполагаю, что вызов node_save вызывает проблему, но я не знаю точно, почему.

Подробнее здесь: https://stackoverflow.com/questions/130 ... components
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как выполнить программно нечеткий поиск в pubchem, используя составные имена
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как программно программно предложить значение модуля Drupal Webform?
    Anonymous » » в форуме Php
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • \Drupal::request()->getRequestUri(); не обновляются параметры предварительной обработки Drupal
    Anonymous » » в форуме Php
    0 Ответы
    118 Просмотры
    Последнее сообщение Anonymous
  • Использование Drupal Cache API для кэширования объектов Drupal
    Anonymous » » в форуме Php
    0 Ответы
    63 Просмотры
    Последнее сообщение Anonymous
  • Drupal 8.9.19 — Drupal 9.0.0
    Anonymous » » в форуме Php
    0 Ответы
    35 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»