diff --git a/docs/guide/tutorial-core-validators.md b/docs/guide/tutorial-core-validators.md index b7555428d8..ec1a14a45c 100644 --- a/docs/guide/tutorial-core-validators.md +++ b/docs/guide/tutorial-core-validators.md @@ -97,7 +97,7 @@ is as specified by the `operator` property. ```php [ - [['from', 'to'], 'date'], + [['from_date', 'to_date'], 'date'], ] ``` @@ -113,6 +113,13 @@ specified via [[yii\validators\DateValidator::timestampAttribute|timestampAttrib - `timestampAttribute`: the name of the attribute to which this validator may assign the UNIX timestamp converted from the input date/time. +In case the input is optional you may also want to add a default value filter in addition to the date validator +to ensure empty input is stored as `NULL`. Other wise you may end up with dates like `0000-00-00` in your database +or `1970-01-01` in the input field of a date picker. + +```php +[['from_date', 'to_date'], 'default', 'value' => null], +``` ## [[yii\validators\DefaultValueValidator|default]] diff --git a/extensions/jui/DatePicker.php b/extensions/jui/DatePicker.php index 77f8981e11..7766588689 100644 --- a/extensions/jui/DatePicker.php +++ b/extensions/jui/DatePicker.php @@ -38,6 +38,14 @@ use yii\helpers\Json; * ]); * ``` * + * Note that empty values like empty strings and 0 will result in a date displayed as `1970-01-01`. + * So to make sure empty values result in an empty text field in the datepicker you need to add a + * validation filter in your model that sets the value to `null` in case when no date has been entered: + * + * ```php + * [['from_date'], 'default', 'value' => null], + * ``` + * * @see http://api.jqueryui.com/datepicker/ * @author Alexander Kochetov * @author Carsten Brandt