Fechas en yii 2

Mi duda es la siguiente en un formulario tengo dos campos de fecha uno es para una fecha de inicio y otra es fecha de termino, lo que necesito es que entre esta dos fechas haya un periodo de 4 o 6 meses, si esto es cierto que el Form guarde los datos, pero si no, no lo haga, si me puede enviar un msj que diga: “debe de ser un perido de 4 o 6 meses” mejor.
Espero me puedan ayudar

/* Moved to International / Spanish */

Hola Ruben , hice algunas pruebas y esta es la implementacion mas facil y rapida que logre hacer

  1. En tu model
    public function rules()
    {
    return [
    [[‘date’, ‘date2’], ‘date’, ‘format’ => ‘dd-MM-yyyy’],
    [[‘date2’, ‘date’], ‘betweenRule’],
    ];
    }
    public function betweenRule($attribute, $params, $validator)
    {
    $date1 = new \DateTime($this->date);
    $date2 = new \DateTime($this->date2);
    $months = $date1->diff($date2)->format(’%m’);
    if ($months < 4 || $months > 6) {
    $this->addError($attribute, ‘La fecha debe estar entre 4 o 6 meses’);
    }
    }

En tu view
<?php $form = ActiveForm::begin([
‘enableAjaxValidation’ => true,
‘enableClientValidation’ => false,
‘options’ => [‘enctype’ => ‘multipart/form-data’]
]) ?>
<?= $form->field($model, ‘date’)->widget(DatePicker::className(), [
‘dateFormat’ => ‘dd-MM-yyyy’,
])?>
<?= $form->field($model, ‘date2’)->widget(DatePicker::className(), [
‘dateFormat’ => ‘dd-MM-yyyy’,
])?>
Submit
<?php ActiveForm::end() ?>
Controller
tienes que implementar validacion por ajax para tu active form

Espero que sea de utilidad saludos

1 Like

Muchas gracias, me ayudo a resolver mi problema.

1 Like