it-swarm-tr.com

Form_set_error ile birden çok hata mesajı nasıl ayarlanır?

İleti değişkenini form_set_error() öğesine iletebileceğimi fark ettim.

Birden fazla mesajı nasıl iletebilirim?

form_set_error () birkaç kez aramayı denedim, ama her zaman birincisi görüntülenir.

Özetlemek gerekirse şöyle bir şey göstermek istiyorum:

  • hata 1
  • hata 2
  • hata 3

Şu anda, sadece alabilirim:

  • hata 1

Ardından, kullanıcılar düzeltip yeniden gönderdikten sonra şunları elde ederler:

  • hata 2

    if (strpos ($ form_state ["değerler"] ["gövde"], "

    if (strpos ($ form_state ["değerler"] ["gövde"], "

Bu kontrol ifadelerinin her ikisi de bir hata tetiklerse, sadece ilki gösterilir. Kullanıcı hatayı düzelttikten sonra ikinci hata mesajı gösterilir.

6
giorgio79

Ben öğe başına form_set_error() tek bir çağrı vermek için kodu değiştirmek istiyorum:

$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

Bunun için ayrı bir işlev oluşturdum:

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

Ve sonra şöyle diyebilirim:

$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

Giriş öğesi adını form_set_error() öğesine mi geçiriyorsunuz?

İşlev adına göre, işlev çağrısı başına bir mesaj iletebilirsiniz.

1
Codium

Bunu bir "hack" ile çözdüm:

$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);
}

Bu biriken tüm hataları Drupal mesajı olarak görüntüler).

0
mparker1113