
If I could have a suggestion, I'd recommend not to fully remove subviews. One may want to call $form->render('path/to/view'); so it'd easy to customize the output html.
My other idea is naming syntax. Currently, ids and names are fully auto-generated. What about naming rules, which can determine both?
A naming rule may look like form-{type}-{attribute}. In this case, {type} and {attribute} would replaced by the input field type (text, password, dropdown, etc.) and attribute name identified by form respectively. A rule also may be empty, which means the corresponding html attribute should be omitted.
How does this sound?