I do something similar Lorna, except my $messages is an array of arrays, keyed by the field in question. You can also get rid of the $can_proceed by testing if the messages array is empty.
[geshi lang=php]
$errMessages = array();
$name = isset($_POST[‘name’]) ? $_POST[‘name’] : null;
if(!$name){
$errMessages[‘name’][] = ‘Required field’;
}
if($name != ‘Richard’){
$errMessages[‘name’][] = ‘Your name is not Richard’;
}
if($errMesssages){
// handle errors
}else{
// continue
}
[/geshi]
It’s useful to retain the field=>error information so that you can display the error message next to the input field in the UI, or provide more context for the consumer of a web-service.
(I will normally json_encode that array and inject the json into my html page in the view, and then use Javascript to enhance the html input fields based on that data.)