Hi everyone, something in validation is bothering me badly, i want to know how to apply validation rules from one model in other, for example: i have 2 models, model A and model B, i have a form from model A which has fields from model B as well, but validation rules from model B are not applying in model’s A form, validations from model A works fine but the ones that come from model B aren’t working, i made the correct instances with the proper scenarios for the rules in the origin model’s controller but isn’t working, here’s the code of the validation rules that i’m using, the instances and the form, hope you can guide me and help me if i’m missing something thanks in advance:
validation rules()
Model Prestamo
array('cant_material, id_prestador, fecha_entrega', 'required', 'on'=>'prestamo', 'message'=>'Tiene que escoger {attribute} para proseguir con el prestamo!'),
Model Materiales
array('cota', 'required', 'on'=>'prestamos', 'message'=>'Debe introducir la cota del material para realizar la búsqueda!'),
Model Ejemplares
array('ejemplar', 'required', 'on'=>'prestar', 'message'=>'Escoja un ejemplar'),
Models instances with scenarios in PrestamoController
$model=new Prestamo('prestamo');
$modelEjemplar = new Ejemplares('prestar');
$materiales = new Materiales('prestamos');
Prestamo’s Form
<div id="materiales" class="container-fluid"><br>
<div id="material_1" class="row-fluid" align="center">
<fieldset class="mtrls"><!--Datos del Material1-->
<legend class="span12 mtrs" style=" font-size: 17px;"><b>Datos del Material</b></legend>
<div>
<div><?php echo $form->labelEx($materiales,'cota', array('for'=>'mat1')); ?></div>
<div>
<?php echo $form->textField($materiales,'cota',array('maxlength'=>'10', 'onchange'=>'buscarMaterial(1)', 'name'=>'materiales[]', 'id'=>'mat1')); ?>
<?php echo $form->error($materiales,'cota'); ?>
</div>
<div id="ejemplar1">
<?php echo $form->labelEx($ejemplares,'ejemplar'); ?>
<?php echo $form->dropDownList($ejemplares, 'ejemplar', CHtml::listData(Ejemplares::model()->findAll(array('order'=>'ejemplar asc')),'id', 'ejemplar'), array('name'=>'ejemplares[]', 'id'=>'ejemplar_1')); ?>
<?php echo $form->error($ejemplares,'ejemplar'); ?>
</div>
<div id="mensajesSistema1" class="materialData1"></div>
<br>
<div id="tabla-mat1" class="span12"></div>
</div>
</fieldset><!--fin datos del material1-->
</div>
<br>
<div id="material_2" class="row-fluid" align="center">
<fieldset class="mtrls"><!--Datos del Material2-->
<legend class="span12 mtrs" style=" font-size: 17px;"><b>Datos del Material</b></legend>
<div>
<div><?php echo $form->labelEx($materiales,'cota', array('for'=>'mat2')); ?></div>
<div>
<?php echo $form->textField($materiales,'cota',array('maxlength'=>'10', 'onchange'=>'buscarMaterial(2)', 'name'=>'materiales[]', 'id'=>'mat2')); ?>
</div>
<div id="ejemplar2">
<?php echo CHtml::label('Ejemplar(es)','ejemplar_2'); ?>
<?php echo $form->dropDownList($ejemplares, 'ejemplar', CHtml::listData(Ejemplares::model()->findAll(array('order'=>'ejemplar asc')),'id', 'ejemplar'), array('name'=>'ejemplares[]', 'id'=>'ejemplar_2')); ?>
</div>
<div id="mensajesSistema2" class="materialData2"></div>
<br>
<div id="tabla-mat2" class="span12"></div>
</div>
</fieldset><!--fin datos del material2-->
</div>
<br>
<div id="material_3" class="row-fluid" align="center">
<fieldset class="mtrls"><!--Datos del Material3-->
<legend class="span12 mtrs" style=" font-size: 17px;"><b>Datos del Material</b></legend>
<div>
<div><?php echo $form->labelEx($materiales,'cota', array('for'=>'mat3')); ?></div>
<div>
<?php echo $form->textField($materiales,'cota',array('maxlength'=>'10', 'onchange'=>'buscarMaterial(3)', 'name'=>'materiales[]', 'id'=>'mat3')); ?>
</div>
<div id="ejemplar3">
<?php echo CHtml::label('Ejemplar(es)','ejemplar_3'); ?>
<?php echo $form->dropDownList($ejemplares, 'ejemplar', CHtml::listData(Ejemplares::model()->findAll(array('order'=>'ejemplar asc')),'id', 'ejemplar'), array('name'=>'ejemplares[]', 'id'=>'ejemplar_3')); ?>
</div>
<div id="mensajesSistema3" class="materialData3"></div>
<br>
<div id="tabla-mat3" class="span12"></div>
</div>
</fieldset><!--fin datos del material3-->
</div>
<br>
<div id="cant_materiales" class="row-fluid" align="center">
<legend class="span12 mtrs" style=" font-size: 17px;"><b>Usuarios</b></legend>
<div>
<?php
$datos = Datos::model()->findAll('id_tipo=1 and borrado=FALSE');
$data = array();
foreach ($datos as $dato)
$data[$dato->id] = $dato->nombres . ' '. $dato->apellidos;
?>
<?php echo $form->labelEx($model, 'id_prestador'); ?>
<?php echo $form->dropDownList($model, 'id_prestador', $data, array('prompt'=>'Seleccione',
'class'=>'input-medium')
);
?>
<?php echo $form->error($model,'id_prestador'); ?>
</div>
<div id="pass_error"></div>
<div id="check-pass" class="input-append">
<?php echo $form->passwordField($modelDatos, 'password'); ?>
<?php $this->widget('bootstrap.widgets.TbButton', array(
'label'=>'Verificar',
'type'=>'primary',
'htmlOptions'=>array(
'id'=>'btn-pass',
'onclick'=>'verificarPass()',
),
)); ?>
</div>
</div>
<br>
<div id="tipo_prestamo" class="row-fluid" align="center">
<legend class="span12 mtrs" style=" font-size: 17px;"><b>Tipo de Prestamo</b></legend>
<div class="span5">
<?php echo CHtml::label('Sala',CHtml::activeId($model, 'id_tipoprestamo')); ?>
<?php echo CHtml::radioButton('tprestamo', true, array('value'=>1, 'uncheckvalue'=>null)); ?>
</div>
<div class="span5">
<?php echo CHtml::label('Circulante',CHtml::activeId($model, 'id_tipoprestamo')); ?>
<?php echo CHtml::radioButton('tprestamo', '', array('value'=>2, 'uncheckvalue'=>null)); ?>
</div>
</div>
<br>
<div id="fecha_prestamo" class="row-fluid" align="center">
<legend class="span12 mtrs" style=" font-size: 17px;"><b>Fechas del Prestamo</b></legend>
<div id="fecha_prestamo" class="span5">
<?php echo $form->textFieldRow($model,'fecha_prestamo', array('readonly'=>true, 'value'=>date("d-m-Y"),)); ?>
</div>
<div id="fecha_entrega" class="span6">
<?php echo $form->labelEx($model, 'fecha_entrega'); ?>
<?php $this->widget('zii.widgets.jui.CJuiDatePicker',
array(
'model' => $model,
'attribute' => 'fecha_entrega',
'value' => $model->fecha_entrega,
'language' => 'es',
'htmlOptions' => array('readonly' => "readonly", 'class' => 'input-large', 'id'=>'fentrega'),
//additional javascript options for the date picker plugin
'options' => array(
'autoSize' => true,
// 'defaultDate'=>$model->fechanacimiento,
//'dateFormat'=>'yy-m-d',
'dateFormat' => 'dd-mm-yy',
'buttonImage' => Yii::app()->baseUrl . '/images/calendario.png',
'buttonImageOnly' => true,
'buttonText' => 'Escoger fecha',
'selectOtherMonths' => true,
'showAnim' => 'slide',
'showButtonPanel' => true,
'showOn' => 'button',
'changeMonth' => 'true',
'changeYear' => 'true',
'yearRange' => "1900:+nn",
'minDate'=> 0,
),
));
?>
<?php echo $form->error($model, 'fecha_entrega'); ?>
</div>
</div>
<br><br>
<div id="seccion-guardar" align="center">
<?php $this->widget('bootstrap.widgets.TbButton',
array(
'buttonType' => 'submit',
'type' => 'info',
'icon'=>'icon-ok icon-white',
'label' => 'Guardar Prestamo',
'htmlOptions' => array(
'id' => 'btn-guardar',
),
)
);
?>
</div>
</div>
The thing here is that i’m not getting the validation errors coming from models Materiales and Ejemplares.