it-swarm-id.com

Bagaimana cara mengatur beberapa pesan kesalahan dengan form_set_error?

Saya perhatikan saya bisa mengirimkan variabel pesan ke form_set_error().

Bagaimana saya bisa mengirim banyak pesan?

Saya mencoba menelepon form_set_error () beberapa kali, tetapi selalu yang pertama ditampilkan.

Jadi, singkatnya saya ingin menunjukkan sesuatu seperti ini:

  • kesalahan 1
  • kesalahan 2
  • kesalahan 3

Saat ini, saya hanya bisa mendapatkan:

  • kesalahan 1

Kemudian, setelah pengguna memperbaikinya, dan mengirim kembali, mereka mendapatkan:

  • kesalahan 2

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

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

Jika kedua pernyataan kontrol ini memicu kesalahan, hanya yang pertama yang ditampilkan. Setelah pengguna memperbaiki kesalahan, pesan kesalahan kedua ditampilkan.

6
giorgio79

Saya akan mengubah kode untuk mengeluarkan satu panggilan ke form_set_error() per elemen:

$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

Saya telah membuat fungsi terpisah untuk itu:

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

Dan kemudian saya bisa menyebutnya seperti itu:

$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

Apakah Anda meneruskan nama elemen input ke form_set_error()?

Menurut nama fungsi Anda dapat mengirimkan satu pesan per panggilan fungsi.

1
Codium

Saya memecahkan ini dengan "retas":

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

Ini akan menampilkan semua akumulasi kesalahan sebagai Drupal pesan.

0
mparker1113