Есть еще момент — формы для сохранения нового объекта и редактирования старого. Использовать одну и ту же форму в формите — крайне сложно. А вот со смарти и процессорами все гораздо проще. Сейчас покажу.
Вот есть форма для заполнения данных: gist.github.com/Fi1osof/8d1af2c4569b57593adb
А вот шаблончик создания пользователя, который подгружает эту форму.
На вход он принимает данные из $_POST. То есть это не Ajax-овая форма. При этом передаваемые поля при сохранении выводятся в своих полях, если в форме есть ошибки и форма не была окончательно отработана. Ну, все стандартно здесь.
А вот шаблончик для редактирования пользователя, который расширяет шаблон создания пользователя. Здесь он так же подгружает форму для данных, но перед этим получает данные запрошенного пользователя и объединяет их с передаваемыми в запросе данными.
Да, это и на формите можно сделать, но будет во-первых, гораздо сложнее, а во-вторых, менее наглядно, потому что раскидано будет по большему количеству сущностей.