Salvar dentro do componente

Olá galera.

Criei o componente EnderecosComponent.php nele salvo os número na model Enderecos.

Está salvando perfeitamente porém quando o campo número da model Enderecos fica em branco ele valida mas não mostra a mensagem de campo requerido.

Alguma solução?

Segue meu código.

Controller:

public function actionCreate()


{


	$model=new Itens;


	$model->setScenario('insert_itens');


	$modelCat=new Categoria;


	$modelTrocas=new ItensTroca();


	$modelP=new Pessoa();


	$modelIM=new ItensMultimidia();


	$modelVendas=new ItensVenda();





	$modelEnderecos=new Enderecos;





	// Uncomment the following line if AJAX validation is needed


	$this->performAjaxValidation($model);


	$this->performAjaxValidation($modelVendas);


	$this->performAjaxValidation($modelEnderecos);








	if(isset($_POST['Itens']))


	{


		$model->attributes=$_POST['Itens'];


		$modelTrocas->attributes=$_POST['ItensTroca'];








		if(!$model->itens_tipo){


			$model->itens_tipo = "T";


		} elseif($model->itens_tipo=='TV'){


			$modelVendas->attributes=$_POST['ItensVenda'];


		}





		$transaction = Yii::app()->db->beginTransaction();





		try{





			if($model->save()){





				$modelTrocas->itens_id = $model->itens_id;





				if($modelTrocas->save()){


						


					Yii::app()->upload->salvar($model, $modelP, Yii::app()->params['uploadPath'] . DIRECTORY_SEPARATOR . Yii::app()->params['uploadPathMultimidiaTrocas']);





					$err_vendas=false;


					$salvar_enderecos=false;





					if($model->itens_tipo=='TV'){


						$modelVendas->itens_id = $model->itens_id;


						if(!$modelVendas->save()){


							$err_vendas=true;


						}


					}





					$modelEnderecos=new Enderecos();





		


					Yii::app()->enderecos->setCampos($modelEnderecos->attributes=$_POST['Enderecos'], $model->itens_id);


					$ret_enderecos = Yii::app()->enderecos->salvar();





					if(count($ret_enderecos)>0){


						$err_vendas=$ret_enderecos['err_ret'];


						$salvar_enderecos=$ret_enderecos['salvar_endereco'];


					}


					





					if($err_vendas==false && $salvar_enderecos==true){


						$transaction->commit();


						$this->redirect(array('view','id'=>$model->itens_id));


					}





				}


			}





		} catch (CDbException $e){


			$transaction->rollback();


			$model->addError(null, $e->getMessage());


		}


	}





	$this->render('create',array(


		'model'=>$model, 'modelCat'=>$modelCat, 'modelTrocas'=>$modelTrocas, 'modelP'=>$modelP, 'modelIM'=>$modelIM, 'modelVendas'=>$modelVendas, 'modelEnderecos'=>$modelEnderecos


	));


}

Componente:

public $_campos;


private $_itens_id;





public function setCampos($campos, $itens_id)


{


	$this->_campos=$campos;


	$this->_itens_id=$itens_id;


}





public function getCampos()


{


	return array('campos'=>$this->_campos, 'itens_id'=>$this->_itens_id);


}





public function salvar() {





	$salvar_endereco=true;


	/* Status de retorno para trocas, vendas, serviços */


	$err_ret=false;





	$ends=$this->getCampos();


	$itens_id = $ends['itens_id'];


	$ends = $ends['campos'];





	if(count($ends)>0){


		foreach ($ends as $key=>$values){


			//foreach ($values as $key2=>$values);


			$modelEnderecos=new Enderecos();


			$modelEnderecos->enderecos_cidade=$_POST['Enderecos'][$key]['enderecos_cidade'];


			$modelEnderecos->enderecos_estado=$_POST['Enderecos'][$key]['enderecos_estado'];


			$modelEnderecos->enderecos_cep=$_POST['Enderecos'][$key]['enderecos_cep'];


			$modelEnderecos->itens_id = $itens_id;


			if(!$modelEnderecos->save()){


				$salvar_endereco=false;


				$err_ret=true;


				break;


			}


		}


	}





	return array('err_ret'=>$err_ret, 'salvar_endereco'=>$salvar_endereco, 'modelEnderecos'=>$modelEnderecos);





}