2013-06-20 79 views
1

我需要幫助創建一個if語句,它將以節點的形式打印取消按鈕只有。沒有if語句,取消按鈕會在所有表單上打印出來,包括網站搜索表單。我嘗試使用'$ form_id!=',但添加了每個表單ID,其中我不需要想取消按鈕似乎並不直觀。任何幫助將非常感激。

<?php 

/** 
* Implements hook_form_alter(). 
*/ 
function cancel_button_form_alter(&$form, &$form_state, $form_id) { 
    // Here is where I'm having trouble. What variable can 
    // I put that targets ANY content type? 
    if ($form_id != 'search_block_form') { 
    // Add a cancel button. 
    $form['actions']['cancel'] = array(
     '#type' => 'submit', 
     '#value' => t('Cancel'), 
     '#access' => TRUE, 
     '#weight' => 15, 
     '#submit' => array('cancel_button_form_cancel', 'node_form_submit_build_node'), 
     '#limit_validation_errors' => array(), 
    ); 
    } 
} 

/** 
* Custom cancel button callback. 
*/ 
function cancel_button_form_cancel($form, &$form_state) { 
$url = $_GET['destination'] ? $_GET['destination'] : ''; 
drupal_goto($url); 
} 
+0

我不明白,我們應該怎麼知道表單是「內容類型」?如果它包含任何指示其「內容類型」表單的任何信息,則必須向我們提供$ form數組。 – Prashank

+0

我很困惑?這只是我正在處理的一個簡單模塊,它將爲任何表單添加一個取消按鈕。我想使取消按鈕只出現在節點的形式(也許這比說「內容類型」,使用if語句更好),但我不知道我可以使用(或如何)只針對節點使用所述if聲明。對不起,你不得不忍受我,因爲我不是經驗豐富的Drupal人。基本上:如果('我應該怎麼把這裏只針對節點的表單?'){打印出取消按鈕} – user2266174

回答

1

如果你是在一個節點/內容時,$form變量都會有一個節點對象。但是如果表單不適用於/從節點,那麼它將不具有節點對象。您可以檢查這樣的:

if(isset($form['#node'])) { 
    // Your code goes here 
} 

其實,我對$form['#node']有點混亂(:P)。你可以通過調試$form$form_state變量來獲得它。

+0

這很好用。感謝奧馬爾的幫助和對我的耐心等待。 – user2266174