2011-11-14 28 views
5

我需要做的這一點,但使用Drupal形式:如何使用Drupal表單API製作後退按鈕?

<input type="button" class="button-user" value="Back" onclick="location.href='edit'"/> 

我試圖這樣做,但它沒有工作:

$form['back']['#prefix'] = "<input type='button' class='button-user' value='Back' onclick='location.href='edit''/>; 

也:

$form['back'] = array(
    '#type' => 'button', 
    '#value' => 'Back', 
    '#attributes' => array(
    'class' => 'button-user', 
    'onclick' => 'location.href=edit',   
    )  
); 
+0

你永不落幕的第一個用引號'「' – switz

回答

4
$form['back']['#markup'] = "<input type='button' class='button-user' value='Back' onclick='location.href=\'edit\''/>"; 
+0

它爲我工作:d THX –

+0

歡迎您:) –

+0

也不要忘記其設置爲接受的答案:) –

0

另一個解決方案將是這一個:

function YOUR_MODULE_form_alter(&$form, &$form_state, $form_id) { 
    switch($form_id) { 
    case "YOUR_FORM_ID": 

     unset($form['#validate']); //Maybe necessary 

     $form['actions']['back'] = array(
     "#type" => "button", 
     "#value" => t('Back'), 
     "#weight" => 15, 
     "#executes_submit_callback" => FALSE, 
     '#limit_validation_errors' => array(), 
     '#ajax' => array(
      'callback' => 'YOUR_MODULE_go_back_callback' 
     ) 
    ); 

     break; 
    default: 
     break; 
    } 
} 

function YOUR_MODULE_go_back_callback() { 
    $html = ' 
    <script type"text/javascript"> 
    window.history.go(-1); 
    </script> 
    '; 
    return $html; 
} 
3
$form['back']['#markup'] = "<input type='button' class='button-user' value='Back' onclick='window.history.go(-1)'/>"; 

這適用於任何頁面。

1

只是增加我的版本,這似乎在7工作的偉大,正好趕上它的重建週期和重定向來代替。可擴展的,可以添加任何其他按鈕來做事情,注意值的拼寫「返回」是「操作」(操作)的名稱..一些混淆和惱怒我的東西,直到我想出來。

function mymodule_something_form($form,&$form_state){ 

    //... Rest of form 

    $form['unused_form_id_back'] = array(
     '#type' => 'button', 
     '#value' => 'Back', 
    ); 
    $form['submit'] = array(
     '#type' => 'submit', 
     '#value' => 'Do Stuff!' 
    ); 
    return $form; 
} 

function mymodule_something_form_validate($form, &$form_state) 
{ 
    if($form_state['values']['op'] == 'Back'){ 
     drupal_goto('something/that_page'); 
    } 
} 
+0

感謝清理了「運」的問題看我的答案。這竊聽我也是。 – zkent

0

我更喜歡不需要JavaScript的解決方案。類似於Grizly的回答,但沒有將它放在表單驗證中,這感覺很難看。但下面的代碼提供了一個鏈接按鈕。在Drupal形式API

function my_form(&$form, &$form_state) { 
    // Some form elements 

    // Regular submit button 
    $form['actions']['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('Submit'), 
); 

    // Back button (different submit handler prevent the standard submit and takes us 
    // to the redirect-submit). 
    $form['actions']['back'] = array(
    '#type' => 'submit', 
    '#value' => t('Go back'), 
    '#submit' => array('custom_back_button'), 
); 
} 

// Custom form callback for redirection. 
function custom_back_button($form, &$form_state) { 
    $form_state['redirect'] = '/edit'; 
} 
1

簡單的選擇,使用#attributes選項。

$form['back-btn'] = array(
    '#type'     => 'button', 
    '#value'    => t('Back'), 
    '#attributes'   => array('onclick' => onclick='window.history.back();'), 
); 
+1

我的問題本來是爲Drupal 6 4年前,但我想這可能是有用的人,謝謝你。 –

+0

$ ['back')= array( '#type'=>'button', \t \t'#value'=> t('Back'), '#attributes'=> array('onclick'=>'window.history.back();'), ); – SushilKumar

0

這是我使用的後退按鈕。 「返回false」避免表單提交。

$form['back'] = array(
    '#type' => 'button', 
    '#value' => t('<< Back'), 
    '#attributes' => array(
    'onclick' => 'window.history.back();return false;', 
), 
); 
相關問題