Ich habe ein Formular, und ein Benutzer muss ein Datum des Beginns und ein Datum des Endes eingeben.Yii2 Datumsvergleich funktioniert nicht in Regeln()
Ich verwende das compare-Attribut in der Methode rules, weil der Benutzer kein Enddatum eingeben kann, das vor dem Anfangsdatum liegt.
Hier ist meine Regeln Methode innerhalb des Modells Form:
['dateFinTR', 'date', 'format' => 'php: d/m/Y'],
['dateFinTR', 'compare', 'compareAttribute' => 'dateDebutTR', 'operator' => '>=', 'skipOnEmpty' => true,]
Das Problem ist, wenn ein Benutzer ein Datum von Anfang an als 2016.05.18 und ein Datum der Beendigung der 2016.04.17 geben, ein Fehlermeldung wird angezeigt und der Benutzer kann das Formular nicht senden. Wenn der Benutzer jedoch ein Datum vom Anfang 2016-05-18 und ein Datum vom Ende 2016-04-23 eingibt, tritt kein Fehler auf und der Benutzer kann das Formular nicht senden. Tatsächlich wird nur der Tag mit dieser Regel verglichen.
EDIT Nach diesem Link: Yii2 Date compare validation, ich habe eine benutzerdefinierte Validierungsmethode erstellt, aber ich bin mit europäischem Format, damit ich die strtotime Methode denke, nicht gut ist wirking. Hier ist meine validateDates Methode:
public function validateDates()
{
if (strtotime($this->dateFinTR) <= strtotime($this->dateDebutTR))
{
$this->addError('dateFinTR', 'Veuillez saisir une date de fin se trouvant avant la date de début');
}
}
Und hier ist der Aufruf dieser Methode:
['dateFinTR', 'validateDates', 'skipOnEmpty' => true],
Alle meine Daten werden in der Datenbank mit Datumsformaten gespeichert, aber wenn Benutzer ein Datum mit Datumsauswahl hinzufügen, sind sie im europäischen Format. –