Вот так данные присваиваются модели в Yii:
public function actionLogin()
{
$model=new LoginForm;
if(isset($_POST['LoginForm']))
{
// collects user input data
$model->attributes=$_POST['LoginForm'];
// validates user input and redirect to previous page if validated
if($model->validate())
$this->redirect(Yii::app()->user->returnUrl);
}
// displays the login form
$this->render('login',array('model'=>$model));
}
Т.е вы предлагаете почти тоже самое. Разве что совсем неверно что у вас модель завязана на источник данных, т.е _POST. Передавайте _POST как параметр. Ну и будьте внимательны при валидации входных данных. И еще - не очень хорошая практика использовать исключение для отлавливания плохих входных данных. Используйте исключения для ИСКЛЮЧИТЕЛЬНЫХ ситуаций. А невалидные данные это штатная ситуация.