On Wed, 21 May 2008 10:05:24 -0400 "Moshe Weitzman" <weitzman@tejasa.com> wrote:
damn, thats sneaky. nice one.
It is. Just it "waste" FAPI validation and it's just a longer way to write DANGEROUS_SKIP_CHECK. What I actually did today for D5 was: - set DANGEROUS_SKIP_CHECK - really copy&paste the FAPI code into a _validate element hook - set custom messages there Still I've coupling and duplication of code. Roberto's technique doesn't improve the coupling problem and it skips the #required and #maxlength check too. Somehow set DANGEROUS_SKIP_CHECK looks better even if Roberto's solution becomes a smart *necessary workaround* in D6+. What about changing: function form_set_error($name = NULL, $message = '') { static $form = array(); if (isset($name) && !isset($form[$name])) { $form[$name] = $message; if ($message) { drupal_set_message($message, 'error'); } } return $form; } to function form_set_error($name = NULL, $message = null, $type=null) { static $form = array(); if (isset($name)) { if(isset($message)) { $form[$name] = Array('#type'=>$type, '#message'=>$message); } else { unset($form[$name]); } } return $form; } + function report_errors() { $errors=form_get_error(); if(is_array($errors)) { foreach($errors as $error) { if($error['message']) { drupal_set_message($error['message'],'error'); } } } } sort of then custom validate functions could access errors calling form_get_error[s]() and change them with form_set_error() After all form_set_error should be called during a form life cycle so... sooner or later drupal_process_form is going to be called so it could be possible to call the error reporting function just after drupal_validate_form get called without any breakage of existing code. -- Ivan Sergio Borgonovo http://www.webthatworks.it