2011-10-10 85 views
0

我試圖弄清楚什麼是錯的Drupal的6 PHP代碼這一點我想要得到在Drupal 7個工作:的Drupal 6 Drupal的7遷移形式API的PHP代碼片段

function node_widget_get_fields(&$form) { 
    $fields = array(); 
    if (isset($form['#type'])) { 
    $content_type = content_types($form['#type']['#value']); 
    foreach ($content_type['fields'] as $field_name => $field) { 
     if ($field['type'] == 'nodereference' && $field['widget']['type'] == 
     'node_widget_node_form') { 
    $fields[$field_name] = $field; 
    } 
} 
} 
return $fields; 

這是多遠我有:

function node_widget_get_fields(&$form) { 
    $fields = array(); 
    if (isset($form['#type'])) { 
    $content_type = field_info_instances($form['#type']['#value']); 
    foreach ($content_type['fields'] as $field_name => $field) { 
     if ($field['type'] == 'nodereference' && $field['widget']['type'] == 
     'node_widget_node_form') { 
    $fields[$field_name] = $field; 
    } 
} 
} 
return $fields; 

返回的錯誤:

Notice: Undefined index: f in field_info_instances() (line 682 of /modules/field/field.info.inc). 
Warning: Invalid argument supplied for foreach() in node_widget_get_fields() (line 164 of all/modules/node_widget/includes/node_widget.form.inc). 

Notice: Undefined index: how_to in field_info_instances() (line 682 of /var/www/bitbybit/modules/field/field.info.inc). 
Warning: Invalid argument supplied for foreach() in node_widget_get_fields() (line 164 of /var/www/bitbybit/sites/all/modules/node_widget/includes/node_widget.form.inc). 
Notice: Undefined index: type in node_widget_get_fields() (line 163 of /var/www/bitbybit/sites/all/modules/node_widget/includes/node_widget.form.inc). 
Notice: Undefined index: fields in node_widget_get_fields() (line 164 of /var/www/bitbybit/sites/all/modules/node_widget/includes/node_widget.form.inc). 

回答

0

field_info_instances需要兩個參數(儘管它們不是必需的),第一個是實體類型(在您的情況下多於node),第二個是捆綁。

在Drupal 7中,所有節點都是實體,而內容類型是該實體中的捆綁包。因此,要獲得與您的特定內容類型相關的所有字段node,您需要執行此操作:

$content_type = field_info_instances('node', $form['#type']['#value']);