İ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:
Şu anda, sadece alabilirim:
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.
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)));
}
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);
}
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.
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).