Я бы определил два метода в init
модели, например:
validate(methods="validateChildren");
afterCreate(methods="createChildren");
validateChildren
будет запускать проверку для каждой дочерней модели (конечно, определенной в соответствующих моделях), рассмотрите возможность использования valid для этой цели - она запускает проверку без сохранения данных.
Используйте следующий синтаксис для передачи ошибки на уровень родительской модели:
addError(property="someproperty", message="Something wrong happened");
Тогда, если ошибок нет, метод 1013 * создаст все необходимые подмодели, используя params
для переопределения безопасных значений по умолчанию. Лично я не стал бы использовать циклический переход по параметрам, потому что полагаться на внешние данные не очень хорошая идея, и это может испортить вещи.