Siobeth
(Siogmz)
August 30, 2013, 4:40pm
1
Buenas Tardes Comunidad!!!.. Una vez más buscando ayuda… Lo que necesito hacer es que me envie una alerta al momento de comparar dos fechas en el controlador y he probado varias cosas y nada…
En la vista tengo:
<?php
echo 'Fecha de Culminación: <span class="required">*</span> ';
if ($model['equi_cul'] != '') {
$model['equi_cul'] = date('d-m-Y', strtotime($model['equi_cul']));
}
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'equi_cul',
'name' => 'equi_cul',
'value' => $model['equi_cul'],
'language' => 'es',
'htmlOptions' => array('readonly' => "readonly"),
'options' => array(
'defaultDate' => $model->equi_cul,
'dateFormat' => 'dd-mm-yy',
'onSelect'=> 'js: function() {'.
CHtml::ajax(array(
'type'=>'POST',
'datatype'=>'json',
'url'=> CController::createUrl('datos_aud/Eq'),
'success'=> 'function(data){
$("#datos_aud_d_equ").val(data);
$("#datos_aud_d_hab").val(data);
}',)
).'}',
)
))
;?>
Alli al seleccionar la fecha de culminación me didirge a la action Eq la cual tengo este codigo:
public function actionEq()
{
$eqini = $_POST['datos_aud']['equi_ini'];
$eqfin = $_POST['datos_aud']['equi_cul'];
if ($eqini < $eqfin){
$dhequipo = $this->Evalua($this->DiasHabiles($eqini, $eqfin));
echo CJSON::encode($dhequipo);}
else
Yii::app()->user->setFlash('success', 'Error de Fechas');
// Yii::app()->clientScript->registerScript(1, 'alert("Error de Fechas")');
}
En el controlador tomo dos fechas comparo si una fecha es menor que otra, si es menor me ejecuta ciertas funciones y manda el resultado por CJSON pero si es mayor necesito que me envie un alerta indicando “Fecha inicial es mayor que fecha final”… he intentado como lo ven alli pero no muestra absolutamente nada… que estare haciendo mal??
bajarjar
(Alcalawilder)
August 30, 2013, 10:43pm
2
prueba mirar que la tabla que redireccionaste recorra los success:
<div class="info" style="text-align: left;" >
<?php
foreach(Yii::app()->user->getFlashes() as $key => $message) {
echo ‘<div id=“infoflash” class="alert in alert-block alert-’ . $key . ‘">’. $message ."<a class=‘close’ data-dismiss=‘alert’>×</a></div>\n";
}
?>
</div>
Siobeth
(Siogmz)
September 2, 2013, 2:31pm
3
bajarjar:
prueba mirar que la tabla que redireccionaste recorra los success:
<div class="info" style="text-align: left;" >
<?php
foreach(Yii::app()->user->getFlashes() as $key => $message) {
echo ‘<div id=“infoflash” class="alert in alert-block alert-’ . $key . ‘">’. $message ."<a class=‘close’ data-dismiss=‘alert’>×</a></div>\n";
}
?>
</div>
HOla … Grcias por responder… pero NO no me funciona… No muestra absolutamente nada…
Siobeth
(Siogmz)
September 2, 2013, 4:03pm
4
Bueno Logre resolver de la siguiente manera… Hice la comparación en el controlador y si es mayor la fecha inicial coloco la variable en 0 y comparo en la vista si es 0 mando el alerta sino realiza las operaciones… En la vista
<?php
echo 'Fecha de Culminación: <span class="required">*</span> ';
if ($model['equi_cul'] != '') {
$model['equi_cul'] = date('d-m-Y', strtotime($model['equi_cul']));
}
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'equi_cul',
'name' => 'equi_cul',
'value' => $model['equi_cul'],
'language' => 'es',
'htmlOptions' => array('readonly' => "readonly"),
'options' => array(
'defaultDate' => $model->equi_cul,
'dateFormat' => 'dd-mm-yy',
'onSelect'=> 'js: function() {'.
CHtml::ajax(array(
'type'=>'POST',
'datatype'=>'json',
'url'=> CController::createUrl('datos_aud/Eq'),
'success'=> 'function(data){
if (data == 0){
alert("Fecha Inicial es Mayor que Fecha Final");}
else
$("#datos_aud_d_equ").val(data);
$("#datos_aud_d_hab").val(data);
}',)
).'}',
)
))
;?>
En el controlador
public function actionEq()
{
$eqini = $_POST['datos_aud']['equi_ini'];
$eqfin = $_POST['datos_aud']['equi_cul'];
if ($eqini < $eqfin){
$dhequipo = $this->Evalua($this->DiasHabiles($eqini, $eqfin));
echo CJSON::encode($dhequipo);
}
else{
$dh = 0;
echo CJSON::encode($dh);}
}
No se si es lo más optimo, pero por ahora es lo que me resulta… si hay otra opcion seria de gran ayuda…
andrelopez
(Andrelopez210190)
September 4, 2013, 1:26pm
5
Siobeth:
Bueno Logre resolver de la siguiente manera… Hice la comparación en el controlador y si es mayor la fecha inicial coloco la variable en 0 y comparo en la vista si es 0 mando el alerta sino realiza las operaciones… En la vista
<?php
echo 'Fecha de Culminación: <span class="required">*</span> ';
if ($model['equi_cul'] != '') {
$model['equi_cul'] = date('d-m-Y', strtotime($model['equi_cul']));
}
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model' => $model,
'attribute' => 'equi_cul',
'name' => 'equi_cul',
'value' => $model['equi_cul'],
'language' => 'es',
'htmlOptions' => array('readonly' => "readonly"),
'options' => array(
'defaultDate' => $model->equi_cul,
'dateFormat' => 'dd-mm-yy',
'onSelect'=> 'js: function() {'.
CHtml::ajax(array(
'type'=>'POST',
'datatype'=>'json',
'url'=> CController::createUrl('datos_aud/Eq'),
'success'=> 'function(data){
if (data == 0){
alert("Fecha Inicial es Mayor que Fecha Final");}
else
$("#datos_aud_d_equ").val(data);
$("#datos_aud_d_hab").val(data);
}',)
).'}',
)
))
;?>
En el controlador
public function actionEq()
{
$eqini = $_POST['datos_aud']['equi_ini'];
$eqfin = $_POST['datos_aud']['equi_cul'];
if ($eqini < $eqfin){
$dhequipo = $this->Evalua($this->DiasHabiles($eqini, $eqfin));
echo CJSON::encode($dhequipo);
}
else{
$dh = 0;
echo CJSON::encode($dh);}
}
No se si es lo más optimo, pero por ahora es lo que me resulta… si hay otra opcion seria de gran ayuda…
Buenas no se si esto te funcione, las validaciones siempre tienen que ser trabajo del modelo para comparar fechas puedes hacerlas de la siguiente manera agregando en el array Rules de tu modelo:
array('fecha_culminacion', 'compare', 'compareAttribute'=>'fecha_creacion','operator'=>'>'),
Saludos.