После долгих исследований и еще большего количества проб и ошибок я нашел это сам.
Во-первых, мне нужно заполнить страницу «Настройки формы», чтобы мы могли проверить, должна ли страница быть видимой / обязательной.
function mymodule_field_settings_form($field, $instance, $has_data) {
$address_fields = array_keys($field['columns']);
// Get all the address values and put them in an array
$options = array();
foreach ($address_fields as $value) {
$options[$value] = $value;
}
// Fill in the values in the dropdown
$form = array();
$form['required_fields']['#type'] = 'checkboxes';
$form['required_fields']['#title'] = t('Required fields');
$form['required_fields']['#default_value'] = $field['settings']['required_fields'];
$form['required_fields']['#options'] = $options;
$form['visible_fields']['#type'] = 'checkboxes';
$form['visible_fields']['#title'] = t('Visible fields');
$form['visible_fields']['#default_value'] = $field['settings']['visible_fields'];
$form['visible_fields']['#options'] = $options;
return $form;
}
А в функции пыльника я это заявил. $element
вызывает функцию, которая возвращает все доступные элементы. Он имеет те же значения, что и $options
в функции выше. Если 'required_field'
включен, мы делаем это необходимым, если 'visible_field'
не включен, мы сбрасываем его!
$element = _mymodule_load_element_fields();
foreach (array_keys($element) as $field_key) {
$element[$field_key]['#default_value'] = isset($items[$delta][$field_key]) ? $items[$delta][$field_key] : ''; // Set default value
$element[$field_key]['#required'] = $field['settings']['required_fields'][$field_key] != '0';
// Set required property
if ($field['settings']['visible_fields'][$field_key] == '0') {
unset($element[$field_key]);
}
Надеюсь, это поможет вам!