Неопределенный индекс: настраиваемое поле в locale_field_entity_form_submit () (строка 438 модуля locale)

Привет я получаю такого рода ошибки при создании пользовательского типа узла с настраиваемыми полями:

Неопределенный индекс: field_block_pre_login_body в locale_field_entity_form_submit () (строка 438 из D: \ xampp \ htdocs \ projects \ foo \ modules \ locale \ locale.module).

Пользовательское поле и пользовательский тип узла создаются через hook_install:

function custom_module_install() {
$nodeType = new stdClass();
$nodeType->type = "foo_block";
$nodeType->orig_type = "foo_block";
$nodeType->base = "node_content";
$nodeType->name = "FooBlock";
$nodeType->description = $t("This is a Custom Content Type for Defining Custom blocks for Pre and Post Login State Functionality on blocks");
$nodeType->help = "Use This Content Type only if the block will have a Login State requirements";
$nodeType->custom = TRUE;
$nodeType->has_title = TRUE;
$nodeType->title_label = "Custom Block";
$nodeType->locked = FALSE;
$nodeType->disabled = FALSE;

node_type_save($nodeType);
if (!field_info_field('field_block_pre_login_body')) {
$field = array(
'field_name' => $t('field_block_pre_login_body'),
'type' => 'text_long',
);
field_create_field($field);

// Create the field instance on the bundle.
$instance = array(
'field_name' => $t('field_block_pre_login_body'),
'label' => $t('Pre-Login Body'),
'bundle' => 'matterhorn_block',
'entity_type' => 'node',
'required' => FALSE,
'widget' => array('type' => 'text_textarea'),
'settings' => array('text_processing' => 1),
'format' => 'filter_html',
);
field_create_instance($instance);
}
}

Теперь, после того как я установил свой пользовательский модуль в Drupal и добавил контент через созданный мной пользовательский тип узла, locale.module выдает ошибку после создания или обновления контента, созданного с этим типом контента, любые идеи, как это сделать почини это? Спасибо!

** РЕДАКТИРОВАТЬ **

Примечание: это модуль drupal, и мне нужно более подробное объяснение того, как drupal-field-api работает с этим, потому что field_block_pre_login_body создается в индексе, как только вы назвали field_create_field метод.

1

Решение

Вы можете использовать этот патч:

diff --git a/modules/locale/locale.module b/modules/locale/locale.module
index 768fead..39ae31f 100644
--- a/modules/locale/locale.module
+++ b/modules/locale/locale.module
@@ -434,14 +434,16 @@ function locale_field_entity_form_submit($entity_type, $form, &$form_state ) {

foreach (field_info_instances($entity_type, $bundle) as $instance) {
$field_name = $instance['field_name'];
-      $field = field_info_field($field_name);
-      $previous_language = $form[$field_name]['#language'];
-
-      // Handle a possible language change: new language values are inserted,
-      // previous ones are deleted.
-      if ($field['translatable'] && $previous_language != $current_language) {
-        $form_state['values'][$field_name][$current_language] = $entity->{$field_name}[$previous_language];
-        $form_state['values'][$field_name][$previous_language] = array();
+      if (!empty($form[$field_name])) {
+        $field = field_info_field($field_name);
+        $previous_language = $form[$field_name]['#language'];
+
+        // Handle a possible language change: new language values are inserted,
+        // previous ones are deleted.
+        if ($field['translatable'] && $previous_language != $current_language) {
+          $form_state['values'][$field_name][$current_language] = $entity->{$field_name}[$previous_language];
+          $form_state['values'][$field_name][$previous_language] = array();
+        }
}
}
}

Читайте больше в Уведомление о создании: неопределенный индекс: в locale_field_entity_form_submit () (строка 438 из /path/to/drupal/installation/modules/locale/locale.module).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]