Drupal препроцессирует коммерческую функцию - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно предварительно обработать функцию из модуля "атрибуты оценки торговли".

Вот функция:

function commerce_pricing_attributes_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {...}

Я не знаю, как предварительно обработать это (если это возможно).

Эта функция создает некоторый элемент в back-офис и что я хочу сделать, это дать цвет этим элементам в зависимости от типа опции, которой является элемент.Если это вариант страхования, есть цвет, если это номер комнаты другого цвета.

Я пытаюсь сделать это с помощью такого изменения: function my_module_field_widget_commerce_pricing_attributes_custom_widget_form_alter(&$element, &$form_state, $context) {...}

Но я не могувся необходимая информация (тип опции).

Есть ли способ предварительной обработки функции, чтобы я мог использовать все значения, которые они используют в своем модуле?

1 Ответ

0 голосов
/ 18 сентября 2018

Я думаю, вам нужно использовать этот хук: hook_field_widget_form_alter

Это позволяет вам переопределить (или добавить) виджет, примененный к полю

function my_module_field_widget_form_alter(&$element, &$form_state, $context) {

  if ($context['field']['type'] == 'mytype') { // you can use another condition on field name or whatever 

    // Loop through the element children (there will always be at least one).
    foreach (element_children($element) as $key => $child) {
      // Add the new process function to the element
      $element[$key]['#process'][] = 'my_custom_callback_field_widget_process';
    }
  }
}

function my_custom_callback_field_widget_process($element, &$form_state, $form){
// do your stuff
  return $element;
 }

NB:выведите дамп переменных точно так, как вам нужно, если вы не знаете их структуру

...