2011-09-21 26 views
1

我想將文件附件選項作爲特定內容類型的必需字段,用戶無法提交沒有附件的節點表單。
我這樣做的方式不起作用,請指導我如果我做錯了方式。如何在Drupal中爲內容類型創建所需的文件附件

function ims_form_alter(&$form, &$form_state, $form_id) { 


    switch ($form_id) { 

    case 'media_content_node_form': 
      unset($form['buttons']['preview']); 
      if(is_numeric(trim(arg(3)))) 
      { 
       $arg_nid = arg(3); 
       $form['field_media_model']['#default_value'][0]['nid'] = $arg_nid; 
      } 

      switch($form['#id']) 
      { 
       case "node-form": 
       $form['attachments']['#required'] = true; 
       break; 
      } 

      break; 
     } 
     } 

回答

2

我發現在使用FileField而不是Drupal的核心上傳模塊時,Drupal中的生活更容易。使用FileField,您可以在您的內容類型上創建一個CCK字段(FileField),並使該字段與其他任何CCK字段相同。這種方法不需要編寫一行代碼。

但是,如果必須使用Drupal的核心上傳模塊,那麼你可以使用hook_form_alter做到這一點,例如:

function my_module_form_alter(&$form, &$form_state, $form_id) { 
    switch ($form['#id']) { 
    case "node-form": 
     switch ($form['type']['#value']) { 
     case "my_node_type": 
      $form['attachments']['#required'] = true; 
      break; 
     } 
    break; 
    } 
} 
+0

這看起來像附件的默認設置,但我只想在特定的內容類型中爲它製作「媒體內容」,因爲我正在更改我的問題以顯示我如何執行此操作。 – punit

+0

我已經用開關/外殼更新了代碼,因此您可以將這些表單更改限制爲特定的節點內容類型。 –

2

是的,這是可能的。

  1. 檢查窗體ID。通常情況下,您可以通過檢查表單並獲取ID來獲取名稱。用'_'替換' - '。這會爲您提供表單的表單ID。
  2. 進行條件檢查,如果窗體ID ==。使用krumo($form)(在此步驟之前啓用devel模塊)。
  3. krumo()給你所有字段名稱的列表。現在,$form[<field_name>]['#required'] = 1;

希望這有助於!

+0

讚賞,但如果我使用的具有AJAX上傳怎麼這麼默認文件附件的方法我知道確切的字段名稱。 – punit

相關問題