[eluser]Colin Williams[/eluser]
It certainly would be possible, crumpet. So, you are talking about access control per field, correct? In order to keep the access checks out of the view, you would need to abstract out the vehicle_form view per field (one view per field or one view per type of field), and you'd probably end up with something like Drupal's Form API. I think the potential downside to this is that you give up the convenience of controlling how the form is marked up (and I guess, technically, you no long have a universal vehicle_form view, you have universal field views). So my suggestion would be to take the lesser of two apparent evils, and litter vehicle_form with the necessary checks.
Example 1
Your controller could simply unset() the fields that the user cannot access, then in vehicle_form, you need to check for the existence of a field before displaying it:
Code:
<?php if (isset($fields['model'])) : ?>
<input name="model" [...] />
<?php endif; ?>
Example 2
You could extend your form definition to include an access array which has a boolean value for each field, but you still need the check in the view, although one could argue that they read better:
Code:
<?php if (access['model']) : ?>
<input name="model" [...] />
<?php endif; ?>
I would go with Example 2 because it reads best, and unsetting form fields might have unintended consequences.