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);
}