[gelöst] drupal Validierung bei drupal_goto()
am 29.09.2011 - 11:46 Uhr in
Ich habe ein Form und möchte gerne ein "Cancel" anbieten. Dies habe ich so realisiert
<?php
$form['cancel'] = array(
'#type' => 'button',
'#value' => t('Cancel'),
'#weight' => 50,
'#executes_submit_callback' => TRUE,
'#submit' => array('company_form_cancel'),
);
function company_form_cancel(){
drupal_goto('/admin/config/system/company/list');
}
?>jetzt heist es bei mir immer das die pflichtfelder ausgefüllt sein müssen aber ich kapier nicht an was es liegt. :(
Kann mir jemand einen Tip geben?
Dankeschööön
- Anmelden oder Registrieren um Kommentare zu schreiben

Ein Submit-Button wird nur
am 29.09.2011 - 11:53 Uhr
Ein Submit-Button wird nur angenommen, wenn alle Pflichtfelder ausgefüllt sind. Ich weiß, das hört sich beim Cancel verückt an, ist aber die Standard Verhaltensweise.
Es braucht aber gar keinen "Cancel"-Button, denn der User kann einfach einen anderen Menüpunkt auswählen (oder den Browser "Zurück" Button betätigen), um das Formular zu verlassen.
Beste Grüße
Werner
Danke dir für die
am 29.09.2011 - 12:09 Uhr
Danke dir für die Antwort.
hmmm. Das ist doof. Muss ich mir was anderes überlegen.
Ich habe selbst versucht eine validierung umzuschreiben auf die obengennante funktion das diese TRUE retour gibt aber das geht ebenso nicht.
lg loony
Es ist zwar ein wenig buggy
am 29.09.2011 - 13:05 Uhr
Es ist zwar ein wenig buggy und irgendwie nicht sehr schön, aber es funktioniert.
<?php$form['cancel'] = array(
'#type' => 'button',
'#attributes' => array('onClick' => 'location.replace('. $_SERVER['HTTP_REFERER'] .'); return false;'),
'#value' => t('Cancel'),
?>
Du könntest auch die Angabe
am 29.09.2011 - 17:19 Uhr
Du könntest auch die Angabe
"#required"bei den einzelnen Feldern raus nehmen und stattdessen in einer eigenen Validate-Funktion prüfen, ob die Felder gefüllt wurden. Diese Überprüfung muss man dann nur durchführen, wenn der "richtige" submit-Button gedrückt wurde. In der Submit-Funktion kann man dann prüfen, welcher Button gedrückt wurde und ggf. ein drupal_goto machen.das habe ich mir auch schon
am 30.09.2011 - 08:36 Uhr
das habe ich mir auch schon überlegt. ist mir jedoch zu viel aufwand für den ertrag. ich müsste diese in mehr als 5 validierungen machen und alle von hand dan validieren? zuviel aufwand für das, dass der kunde nur cancel klicken kann. oder sehe ich das falsch?
Zitat: oder sehe ich das
am 30.09.2011 - 15:49 Uhr
oder sehe ich das falsch?
Meiner Meinung nach schon ;-)
Ich finde, es ist nicht viel Aufwand, das sind pro Feld ein oder zwei Zeilen, die man sich mal schnell per Copy&Paste verfielfältigen kann. Dafür bist du damit auf der sicheren Seite, Javascript ist fehleranfällig. Wenn der Kunde im Browser Javascript deaktiviert hat, funktioniert der Button nicht mehr, damit hat man nichts gekonnt. Oder lass mal - aus welchem Grund auch immer - einen Javascript-Fehler auf der Seite auftauchen, völlig unabhängig von deinem Button, dann stehen deine Chancen gut, dass der Button auch nicht funktioniert. Dann klickt dein Kunde auf dem Button rum und nichts passiert, das macht immer einen guten Eindruck ;-)
Und ich finde, wenn man für seinen Kunden etwas macht, dann sollte man das auch ordentlich machen und nicht solche halbgaren JS-Hacks verwenden, die potentiell nicht funktionieren, nur weil es "zu viel Aufwand" wäre, so ein paar Zeilen einzufügen. Ist ja echt keine Sache, das wäre pro Feld so eine Zeile:
<?php if ($form_state['values']['mein_feld'] == '') {form_set_error('Meine Fehlermeldung');} ?>