私はフォームを持っており、ユーザーは開始日と終了日を入力する必要があります。Yii2日付比較がルール内で機能していません。
ユーザーは、開始日より前の終了日を入力できないため、ルールメソッド内の比較属性を使用しています。
はここで、フォームのモデル内の私のルールの方法です:
['dateFinTR', 'date', 'format' => 'php: d/m/Y'],
['dateFinTR', 'compare', 'compareAttribute' => 'dateDebutTR', 'operator' => '>=', 'skipOnEmpty' => true,]
ユーザーは2016年5月18日のように最初の日と2016年4月17日の終了の日付を入力する場合、問題は、ありますエラーメッセージが表示され、ユーザーはフォームを送信できません。しかし、ユーザーが2016-05-18の開始日と2016-04-23の終了日を入力した場合、エラーはなく、ユーザーはフォームを送信できません。 実際、このルールと比較するのは1日だけです。このリンクによると
EDIT
: Yii2 Date compare validationは、私は、カスタム検証メソッドを作成しましたが、私はのstrtotime方法が良いwirkingされていないと思うので、私はヨーロッパの形式を使用しています。 は、ここに私のvalidateDates方法です: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');
}
}
そして、ここでは、このメソッドの呼び出しです:
if (strtotime($this->dateFinTR) > strtotime($this->dateDebutTR))
イベント終了日を次のようになります。あなたの日付は、次のことを確認してください
['dateFinTR', 'validateDates', 'skipOnEmpty' => true],
私のすべての日付は日付形式でデータベースに保存されますが、ユーザーがdatepickerで日付を追加すると、それらはヨーロッパ形式です。 –