Thank you for your replies, by looking at the datamapper source code i found out that validations fails when $item->error->all is not empty. Therefore i could add a method in the datamapper library that does exactly the same thing as $item->error_message() except populating the $item->error->all array. like this:
/**
* Status Message
*
* Adds an status message to this objects error object.
*
* @param string $field Field to set the error on.
* @param string $error Error message.
*/
public function status_message($field, $error)
{
if ( ! empty($field) && ! empty($error))
{
// Set field specific value
$this->error->{$field} = $this->error_prefix . $error . $this->error_suffix;
// Add field error to errors all list
// $this->error->all[$field] = $this->error->{$field};
// Append value to error message string
$this->error->string .= $this->error->{$field};
}
}