diff --git a/inline_entity_form.module b/inline_entity_form.module index 5922e0b..713c364 100644 --- a/inline_entity_form.module +++ b/inline_entity_form.module @@ -544,6 +544,18 @@ function inline_entity_form_field_widget_form(&$form, &$form_state, $field, $ins 'allowed_bundles' => $settings['bundles'], ); drupal_alter('inline_entity_form_table_fields', $fields, $context); + + // Prepare render arguments for fields with render callback. + foreach ($fields as $field_name => &$field) { + if (isset($field['render_callback'])) { + $fields[$field_name]['render_arguments'] = array( + 'entity_type' => $settings['entity_type'], + 'entity' => NULL, + 'context' => $context, + ); + } + } + $element['entities']['#table_fields'] = $fields; foreach ($form_state['inline_entity_form'][$ief_id]['entities'] as $key => $value) { @@ -1695,7 +1707,10 @@ function theme_inline_entity_form_entity_table($variables) { $data = drupal_render($renderable_data); } elseif ($field['type'] == 'callback' && isset($field['render_callback']) && function_exists($field['render_callback'])) { - $data = call_user_func($field['render_callback'], $entity_type, $entity); + // Override entity entry with current entity. + $field['render_arguments']['entity'] = $entity; + + $data = call_user_func_array($field['render_callback'], $field['render_arguments']); } $cells[] = array('data' => $data, 'class' => array('inline-entity-form-' . $entity_type . '-' . $field_name));