2011-11-14 11 views
5

Ben ancak Drupal formları ile yapmanız gerekir: Ben bunu denedimDrupal form API'sı ile nasıl geri dönüş yapabilirim?

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

ama işe yaramadı: Ayrıca

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

ve:

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

asla '" 'tırnak işaretleri ilkini kapatmak – switz

cevap

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

o benim için çalışıyor. D thx –

+0

ayrıca karşılama :) –

+0

konum kabul edilen yanıt :) olarak belirlemek için unutma –

0

Başka çözüm şu olabilir:

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)'/>"; 

Bu, herhangi bir sayfa için geçerlidir.

1

Yalnızca 7 sürümünde harika görünen bir sürümü ekledikten sonra, bunu yeniden oluşturma döngüsünde yakalayın ve yeniden yönlendirin. Genişletilebilir, herhangi bir şey yapmak için başka herhangi bir düğme ekleyebilirsiniz, "Geri" değerinin yazımının "op" un (işlem) adı olduğunu unutmayın. Anlaşılana kadar kafamı karıştıran ve rahatsız eden bir şey.

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

kullanarak görüyorum "op" sorununu temizlediğiniz için teşekkürler. Bu da beni uyardı – zkent

0

JavaScript gerektirmeyen bir çözümü tercih ettim. Grizly'nin cevabına benzer, ancak çirkin hissettikleri form doğrulamada bulunmadan. Ancak aşağıdaki kod bir bağlantı düğmesi sunuyor. #attributes seçenek kullanma Drupal Form 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

En basit seçenek.

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

Sorum şu drupal 6 4 yıl önce içindi ama başkalarına yararlı olabileceğini düşünüyorum, teşekkürler. –

+0

$ form ['back-btn'] = dizi ( '#type' => 'düğmesi', \t \t '#value' => t ('Geri'), '#attributes' => dizi ('onclick'=> 'window.history.back();'), ); – SushilKumar

0

Bu, kullandığım arka düğme. "Return false" form gönderiminden kaçınılır.

$form['back'] = array(
    '#type' => 'button', 
    '#value' => t('<< Back'), 
    '#attributes' => array(
    'onclick' => 'window.history.back();return false;', 
), 
); 
İlgili konular