it-swarm.com.de

Wie setze ich mehrere Fehlermeldungen mit form_set_error?

Ich stelle fest, dass ich eine Nachrichtenvariable an form_set_error() übergeben kann.

Wie kann ich mehrere Nachrichten weiterleiten?

Ich habe mehrmals versucht, form_set_error () aufzurufen, aber immer wird der erste angezeigt.

Zusammenfassend möchte ich so etwas zeigen:

  • fehler 1
  • fehler 2
  • fehler 3

Derzeit kann ich nur bekommen:

  • fehler 1

Sobald die Benutzer es korrigiert und erneut eingereicht haben, erhalten sie:

  • fehler 2

    if (strpos ($ form_state ["values"] ["body"], "

    if (strpos ($ form_state ["values"] ["body"], "

Wenn diese beiden Steueranweisungen einen Fehler auslösen, wird nur die erste angezeigt. Nachdem der Benutzer den Fehler behoben hat, wird die zweite Fehlermeldung angezeigt.

6
giorgio79

Ich würde den Code ändern, um einen einzelnen Aufruf von form_set_error() pro Element auszugeben:

$errors = array();
if (strpos($form_state["values"]["body"], "<h1") === true)
    $error_messages["body"][] = "Blalalabalbal bablalbabla.";

if (strpos($form_state["values"]["body"], "<h3") === false)
    $error_messages["body"][] = "Do this do that balbablalba.";

foreach ($error_messages as $element => $messages) {
    form_set_error($element, theme('item_list', array('items' => messages)));
}
10
janusman

Ich habe dafür eine separate Funktion erstellt:

function form_set_error_multiple($name = NULL, $messages = '', $limit_validation_errors = NULL) {
  return form_set_error('extra][items', implode('</li><li>', $messages));
}

Und dann kann ich es so nennen:

$errors = array();
$errors[] = 'My element error';
$errors[] = 'Another error for the same element';

if ($errors) {
  form_set_error_multiple('my_element', $errors);
}
2
Rafal Enden

Übergeben Sie den Namen des Eingabeelements an form_set_error()?

Je nach Funktionsname können Sie pro Funktionsaufruf eine Nachricht übergeben.

1
Codium

Ich habe das mit einem "Hack" gelöst:

$error_messages = "";
if (strpos($form_state["values"]["body"], "<h1") === true)
   $error_messages .= "Error Message on First Line <br/>";
}
if (strpos($form_state["values"]["body"], "<h3") === false){
   $error_messages .= "Error Message on Another Line <br/>";
}
// next check if there are any errors, and if so, write them to form_set_error
if(strlen($error_messages) > 0){
  form_set_error('',$error_messages);
}

Dies zeigt alle akkumulierten Fehler als Drupal Nachricht.

0
mparker1113