Class kartik\date\DatePicker

Inheritancekartik\date\DatePicker » kartik\base\InputWidget » yii\widgets\InputWidget » yii\base\Widget » yii\base\Component » yii\base\BaseObject
Implementskartik\base\BootstrapInterface, yii\base\Configurable, yii\base\ViewContextInterface
Uses Traitskartik\base\BootstrapTrait, kartik\base\TranslationTrait, kartik\base\WidgetTrait
Subclasseskartik\widgets\DatePicker
Available since version1.0

DatePicker widget is a Yii2 wrapper for the Bootstrap DatePicker plugin by @eternicode and provides a flexible datepicker widget in Bootstrap style.This DatePicker widget by Krajee also includes additional features and enhancements to the core plugin like better useful bootstrap addons. It includes an enhanced date clear addon button to clear dates easily. It also adds ability to configure and render the datepicker INLINE, or as a BUTTON, or as a date RANGE by integrating with the kartik\field\FieldRange widget.

Usage example:

use kartik\date\DatePicker;
// usage without model
echo '<label>Check Issue Date</label>';
echo DatePicker::widget([
    'name' => 'check_issue_date',
    'value' => date('d-M-Y', strtotime('+2 days')),
    'options' => ['placeholder' => 'Select issue date ...'],
    'pluginOptions' => [
        'format' => 'dd-M-yyyy',
        'todayHighlight' => true
    ]
]);

See also http://eternicode.github.io/bootstrap-datepicker/.

Public Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
$addInputCss string Additional CSS class that will be appended to the date input class within $options and $options2. kartik\date\DatePicker
$attribute string|null The model attribute that this widget is associated with. yii\widgets\InputWidget
$attribute2 string The model attribute 2 if you are setting $type to TYPE_RANGE for markup. kartik\date\DatePicker
$autoIdPrefix string The prefix to the automatically generated widget IDs. yii\base\Widget
$baseSourcePath string|false Get parsed base source path based on $sourcePath setting. If $sourcePath is not set, it will return the current working directory of this widget class. kartik\base\WidgetTrait
$behaviors yii\base\Behavior[] List of behaviors attached to this component. yii\base\Component
$bsColCssPrefixes array The bootstrap grid column css prefixes mapping, the key is the bootstrap versions, and the value is an array containing the sizes and their corresponding grid column css prefixes. kartik\base\BootstrapTrait
$bsCssMap array CSS conversion mappings across bootstrap library versions. kartik\base\BootstrapTrait
$bsExtBasename integer The yii2 bootstrap extension base name (readonly property available via getter method getBsExtBasename()) kartik\base\BootstrapTrait
$bsVer integer Bootstrap version number currently set (readonly property available via getter method getBsVer()) kartik\base\BootstrapTrait
$bsVersion integer|string The bootstrap library version that you wish to use for this specific extension / widget. kartik\base\BootstrapTrait
$buttonOptions array The HTML attributes for the button that is rendered for TYPE_BUTTON. kartik\date\DatePicker
$convertFormat boolean Whether the widget should automatically format the date from the PHP DateTime format to the javascript/jquery plugin format. kartik\base\InputWidget
$counter integer A counter used to generate $id for widgets. yii\base\Widget
$data array The data (for list inputs) kartik\base\InputWidget
$defaultBtnCss string Default bootstrap button CSS (readonly property available via getter method getDefaultBtnCss()) kartik\base\BootstrapTrait
$defaultIconPrefix string Default icon prefix (readonly property available via getter method getDefaultIconPrefix()) kartik\base\BootstrapTrait
$defaultOptions array Default HTML attributes or other settings for widgets. kartik\base\WidgetTrait
$defaultPluginOptions array Default plugin options for the widget kartik\base\WidgetTrait
$disabled boolean Whether input is to be disabled kartik\base\InputWidget
$dropdownClass string Bootstrap dropdown class name based on currently configured bootstrap version (readonly property available via getter method getDropdownClass()) kartik\base\BootstrapTrait
$field yii\widgets\ActiveField Active input field, which triggers this widget rendering. yii\widgets\InputWidget
$form yii\widgets\ActiveForm The ActiveForm object which you can pass for seamless usage with ActiveForm. kartik\date\DatePicker
$hashVarLoadPosition integer The position where the client JS hash variables for the input widget will be loaded. kartik\base\WidgetTrait
$i18n array The the internalization configuration for this widget. kartik\base\TranslationTrait
$id string|null ID of the widget. Note that the type of this property differs in getter and setter. See getId() and setId() for details. yii\base\Widget
$language string The language configuration (e.g. 'fr-FR', 'zh-CN'). kartik\base\InputWidget
$layout string The layout template to display the buttons (applicable only when $type is set to one of TYPE_COMPONENT_PREPEND or TYPE_COMPONENT_APPEND or TYPE_RANGE). kartik\date\DatePicker
$model yii\base\Model|null The data model that this widget is associated with. yii\widgets\InputWidget
$moduleId string The module identifier if this widget is part of a module. kartik\base\WidgetTrait
$name string|null The input name. yii\widgets\InputWidget
$name2 string The name of input number 2 if you are setting $type to TYPE_RANGE for markup. kartik\date\DatePicker
$options array The HTML attributes for the input tag. kartik\date\DatePicker
$options2 array The HTML attributes for the input number 2 if you are setting $type to TYPE_RANGE for markup. kartik\date\DatePicker
$pickerButton array|string|boolean The calendar picker button configuration. kartik\date\DatePicker
$pickerIcon string The markup for the calendar picker icon. kartik\date\DatePicker
$pjaxContainerId string The identifier for the PJAX widget container if the widget is to be rendered inside a PJAX container. kartik\base\WidgetTrait
$pjaxDuplicationFix boolean Prevent duplication of pjax containers when browser back & forward buttons are pressed. kartik\base\WidgetTrait
$pluginDestroyJs string The javascript that will be used to destroy the jQuery plugin kartik\base\WidgetTrait
$pluginEvents array Widget JQuery events. kartik\base\WidgetTrait
$pluginLoading boolean Show loading indicator while plugin loads kartik\base\InputWidget
$pluginName string The plugin name kartik\date\DatePicker
$pluginOptions array Widget plugin options. kartik\base\WidgetTrait
$readonly boolean Whether input is to be readonly kartik\base\InputWidget
$removeButton array|string|boolean The calendar remove button configuration - applicable only for type set to TYPE_COMPONENT_PREPEND or TYPE_COMPONENT_APPEND. kartik\date\DatePicker
$removeIcon string The markup for the remove icon (which will clear the datepicker data). kartik\date\DatePicker
$separator string The range input separator if you are setting $type to TYPE_RANGE for markup. kartik\date\DatePicker
$size string The size of the input - 'lg', 'md', 'sm', 'xs' kartik\date\DatePicker
$sourcePath string Directory path to the original widget source. kartik\base\WidgetTrait
$stack yii\base\Widget[] The widgets that are currently being rendered (not ended). yii\base\Widget
$type string The markup type of widget markup must be one of the TYPE constants. kartik\date\DatePicker
$value string The input value. yii\widgets\InputWidget
$value2 string The name of value for input number 2 if you are setting $type to TYPE_RANGE for markup. kartik\date\DatePicker
$view yii\web\View The view object that can be used to render views or view files. Note that the type of this property differs in getter and setter. See getView() and setView() for details. yii\base\Widget
$viewPath string The directory containing the view files for this widget. yii\base\Widget

Protected Properties

Hide inherited properties

PropertyTypeDescriptionDefined By
$_bsVer integer Current bootstrap version number kartik\base\BootstrapTrait
$_dataVar string The HTML5 data variable name that will be used to store the Json encoded pluginOptions within the element on which the jQuery plugin will be initialized. kartik\base\WidgetTrait
$_defaultBtnCss string Default bootstrap button CSS kartik\base\BootstrapTrait
$_defaultIconPrefix string Default icon CSS prefix kartik\base\BootstrapTrait
$_encOptions string The JSON encoded plugin options. kartik\base\WidgetTrait
$_hasAddon boolean Whether a prepend or append addon exists. kartik\date\DatePicker
$_hashVar string The generated hashed variable name that will store the JSON encoded pluginOptions in yii\web\View::POS_HEAD. kartik\base\WidgetTrait
$_isBs4 boolean Flag to detect whether bootstrap 4. kartik\base\BootstrapTrait
$_lang string The two or three letter lowercase code for the language according to ISO-639. kartik\base\InputWidget
$_langFile string The language js file. kartik\base\InputWidget
$_loadIndicator string The indicator to be displayed while plugin is loading. kartik\base\InputWidget
$_msgCat string Translation message file category name for i18n. kartik\date\DatePicker

Public Methods

Hide inherited methods

MethodDescriptionDefined By
__call() Calls the named method which is not a class method. yii\base\Component
__clone() This method is called after the object is created by cloning an existing one. yii\base\Component
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of a component property. yii\base\Component
__isset() Checks if a property is set, i.e. defined and not null. yii\base\Component
__set() Sets the value of a component property. yii\base\Component
__unset() Sets a component property to be null. yii\base\Component
addCssClass() Adds bootstrap CSS class to options by parsing the bootstrap version for the specified Bootstrap CSS type. kartik\base\BootstrapTrait
afterRun() This method is invoked right after a widget is executed. yii\base\Widget
attachBehavior() Attaches a behavior to this component. yii\base\Component
attachBehaviors() Attaches a list of behaviors to the component. yii\base\Component
beforeRun() This method is invoked right before the widget is executed. yii\base\Widget
begin() Begins a widget. yii\base\Widget
behaviors() Returns a list of behaviors that this component should behave as. yii\base\Component
canGetProperty() Returns a value indicating whether a property can be read. yii\base\Component
canSetProperty() Returns a value indicating whether a property can be set. yii\base\Component
className() Returns the fully qualified name of this class. yii\base\BaseObject
detachBehavior() Detaches a behavior from the component. yii\base\Component
detachBehaviors() Detaches all behaviors from the component. yii\base\Component
end() Ends a widget. yii\base\Widget
ensureBehaviors() Makes sure that the behaviors declared in behaviors() are attached to this component. yii\base\Component
getBSClass() Gets the respective Bootstrap class based on currently configured bootstrap version. kartik\base\BootstrapTrait
getBaseSourcePath() Get parsed base source path based on $sourcePath setting. If $sourcePath is not set, it will return the current working directory of this widget class. kartik\base\WidgetTrait
getBehavior() Returns the named behavior object. yii\base\Component
getBehaviors() Returns all behaviors attached to this component. yii\base\Component
getBsVer() Gets the current set bootstrap version number. kartik\base\BootstrapTrait
getCssClass() Gets bootstrap css class by parsing the bootstrap version for the specified BS CSS type. kartik\base\BootstrapTrait
getDefaultBtnCss() Gets the default button CSS kartik\base\BootstrapTrait
getDefaultIconPrefix() Gets the default icon css prefix kartik\base\BootstrapTrait
getDropdownClass() Gets the respective bootstrap dropdown class name based on currently configured bootstrap version. kartik\base\BootstrapTrait
getId() Returns the ID of the widget. yii\base\Widget
getView() kartik\base\WidgetTrait
getViewPath() Returns the directory containing the view files for this widget. yii\base\Widget
hasEventHandlers() Returns a value indicating whether there is any handler attached to the named event. yii\base\Component
hasMethod() Returns a value indicating whether a method is defined. yii\base\Component
hasProperty() Returns a value indicating whether a property is defined for this component. yii\base\Component
init() Initializes the widget. kartik\base\InputWidget
initI18N() Yii i18n messages configuration for generating translations kartik\base\TranslationTrait
isBs() Validate Bootstrap version kartik\base\BootstrapTrait
isBs4() Validate if Bootstrap 4.x version. kartik\base\BootstrapTrait
off() Detaches an existing event handler from this component. yii\base\Component
on() Attaches an event handler to an event. yii\base\Component
registerAssets() Registers the kartik\date\DatePicker widget client assets. kartik\date\DatePicker
registerWidgetJs() Registers a JS code block for the widget. kartik\base\WidgetTrait
removeCssClass() Removes bootstrap CSS class from options by parsing the bootstrap version for the specified Bootstrap CSS type. kartik\base\BootstrapTrait
render() Renders a view. yii\base\Widget
renderFile() Renders a view file. yii\base\Widget
run() Executes the widget. kartik\date\DatePicker
setId() Sets the ID of the widget. yii\base\Widget
setView() Sets the view object to be used by this widget. yii\base\Widget
trigger() Triggers an event. yii\base\Component
widget() Creates a widget instance and runs it. yii\base\Widget

Protected Methods

Hide inherited methods

MethodDescriptionDefined By
addAsset() Adds an asset to the view. kartik\base\WidgetTrait
configureBsVersion() Configures the bootstrap version settings kartik\base\BootstrapTrait
convertDateFormat() Automatically convert the date format from PHP DateTime to Javascript DateTime format kartik\base\InputWidget
err() Raise an invalid configuration exception. kartik\date\DatePicker
fixPjaxDuplication() Fix for weird PJAX container duplication behavior on pressing browser back and forward buttons. kartik\base\WidgetTrait
getBsExtBasename() The yii2-bootstrap extension base name. kartik\base\BootstrapTrait
getInput() Generates an input. kartik\base\InputWidget
getPluginScript() Returns the plugin registration script. kartik\base\WidgetTrait
hasModel() yii\widgets\InputWidget
hashPluginOptions() Generates a hashed variable to store the pluginOptions. kartik\base\WidgetTrait
initBsVersion() Initializes bootstrap versions for the widgets and asset bundles. kartik\base\BootstrapTrait
initDestroyJs() Generates the pluginDestroyJs script if it is not set. kartik\base\WidgetTrait
initDisability() Validates and sets disabled or readonly inputs. kartik\base\InputWidget
initIcon() Initializes picker icon and remove icon kartik\date\DatePicker
initInputWidget() Initializes the input widget. kartik\base\InputWidget
initLanguage() Initialize the plugin language. kartik\base\InputWidget
isSameVersion() Compares two versions and checks if they are of the same major BS version. kartik\base\BootstrapTrait
mergeDefaultOptions() Merge default options kartik\base\WidgetTrait
parseDateFormat() Parses and sets plugin date format based on attribute type using yii\helpers\FormatConverter. Currently this method is used only within the kartik\date\DatePicker and \kartik\datetime\DateTimePicker\ widgets. kartik\base\InputWidget
parseMarkup() Parses the input to render based on markup type. kartik\date\DatePicker
parseVer() Parses and returns the major BS version kartik\base\BootstrapTrait
registerPlugin() Registers a specific plugin and the related events kartik\base\WidgetTrait
registerPluginOptions() Registers plugin options by storing within a uniquely generated javascript variable. kartik\base\WidgetTrait
renderAddon() Returns the addon to render kartik\date\DatePicker
renderDatePicker() Renders the date picker widget. kartik\date\DatePicker
renderInput() Renders the source input for the DatePicker plugin. kartik\date\DatePicker
renderInputHtml() Render a HTML input tag. yii\widgets\InputWidget
setDataVar() Sets a HTML5 data variable. kartik\base\WidgetTrait
setLanguage() Sets the language JS file if it exists. kartik\base\InputWidget
validateConfig() Validates widget configuration. kartik\date\DatePicker

Events

Hide inherited events

EventTypeDescriptionDefined By
EVENT_AFTER_RUN yii\base\WidgetEvent An event raised right after executing a widget. (available since version 2.0.11) yii\base\Widget
EVENT_BEFORE_RUN yii\base\WidgetEvent An event raised right before executing a widget. (available since version 2.0.11) yii\base\Widget
EVENT_INIT yii\base\Event An event that is triggered when the widget is initialized via init(). (available since version 2.0.11) yii\base\Widget

Constants

Hide inherited constants

ConstantValueDescriptionDefined By
LOAD_PROGRESS '
 
'
kartik\base\InputWidget
TYPE_BUTTON 6 Datepicker rendered as a picker button without any input kartik\date\DatePicker
TYPE_COMPONENT_APPEND 3 Datepicker with the date picker button rendered as a appended bootstrap addon component kartik\date\DatePicker
TYPE_COMPONENT_PREPEND 2 Datepicker with the date picker button rendered as a prepended bootstrap addon component kartik\date\DatePicker
TYPE_INLINE 4 Datepicker calendar directly rendered inline kartik\date\DatePicker
TYPE_INPUT 1 Datepicker rendered as a plain input. kartik\date\DatePicker
TYPE_RANGE 5 Datepicker range with from and to date inputs kartik\date\DatePicker

Property Details

$_hasAddon protected property

Whether a prepend or append addon exists.

protected boolean $_hasAddon false
$_msgCat protected property

Translation message file category name for i18n.

protected string $_msgCat 'kvdate'
$addInputCss public property

Additional CSS class that will be appended to the date input class within $options and $options2. Defaults to form-control. This value can be changed for custom (non Bootstrap) CSS styling.

public string $addInputCss 'form-control'
$attribute2 public property

The model attribute 2 if you are setting $type to TYPE_RANGE for markup.

public string $attribute2 null
$buttonOptions public property

The HTML attributes for the button that is rendered for TYPE_BUTTON. Defaults to

  • ['class'=>'btn btn-default'] for $bsVersion = '3.x', and
  • ['class'=>'btn btn-secondary'] for $bsVersion = '4.x' The following special options are recognized:
  • 'label': string the button label. Defaults to the $pickerIcon setting.
public array $buttonOptions = []
$form public property

The ActiveForm object which you can pass for seamless usage with ActiveForm. This property is especially useful for client validation of $attribute2 for TYPE_RANGE validation.

$layout public property

The layout template to display the buttons (applicable only when $type is set to one of TYPE_COMPONENT_PREPEND or TYPE_COMPONENT_APPEND or TYPE_RANGE). The following tokens will be parsed and replaced when $type is set to one of TYPE_COMPONENT_PREPEND or TYPE_COMPONENT_APPEND:

  • {picker}: will be replaced with the date picker button (rendered as a bootstrap input group addon).
  • {remove}: will be replaced with the date clear/remove button (rendered as a bootstrap input group addon).
  • {input}: will be replaced with the HTML input markup that stores the date.

When $type is set to TYPE_RANGE the following tokens will be parsed and replaced:

  • {input1}: will be replaced with the HTML input markup that stores the date for attribute1.
  • {separator}: will be replaced with the input group addon for field range separator. The text for the separator is set via the separator property.
  • {input2}: will be replaced with the HTML input markup that stores the date for attribute2.

The $layout property defaults to the following value if not set:

public string $layout null
$name2 public property

The name of input number 2 if you are setting $type to TYPE_RANGE for markup.

public string $name2 null
$options public property

The HTML attributes for the input tag.

public array $options = []
$options2 public property

The HTML attributes for the input number 2 if you are setting $type to TYPE_RANGE for markup.

public array $options2 = []
$pickerButton public property

The calendar picker button configuration.

  • if this is passed as a string, it will be displayed as is (will not be HTML encoded).
  • if this is set to false, the picker button will not be displayed.
  • if this is passed as an array (which is the default) it will be parsed as HTML attributes for the button (to be displayed as a Bootstrap addon). The following special keys are recognized;
    • label: string, the label for the button. Defaults to $pickerIcon.
    • title: _string|boolean, the title to be displayed on hover. Defaults to 'Select date & time'. To disable, set it to false.
$pickerIcon public property

The markup for the calendar picker icon. If not set this will default to:

  • <i class="glyphicon glyphicon-calendar kv-dp-icon"></i> if $bsVersion is set to 3.x
  • <i class="fas fa-calendar-alt kv-dp-icon"></i> if $bsVersion is set to 4.x
public string $pickerIcon null
$pluginName public property

The plugin name

public string $pluginName 'kvDatepicker'
$removeButton public property

The calendar remove button configuration - applicable only for type set to TYPE_COMPONENT_PREPEND or TYPE_COMPONENT_APPEND.

  • if this is passed as a string, it will be displayed as is (will not be HTML encoded).
  • if this is set to false, the remove button will not be displayed.
  • if this is passed as an array (this is the DEFAULT) it will treat this as HTML attributes for the button (to be displayed as a Bootstrap addon). The following special keys are recognized;
    • label: string, the label for the button. Defaults to $removeIcon.
    • title: _string|boolean, the title to be displayed on hover. Defaults to 'Clear field'. To disable, set it to false.
$removeIcon public property

The markup for the remove icon (which will clear the datepicker data). If not set this will default to:

  • <i class="glyphicon glyphicon-remove kv-dp-icon"></i> if $bsVersion is set to 3.x
  • <i class="fas fa-times kv-dp-icon"></i> if $bsVersion is set to 4.x
public string $removeIcon null
$separator public property

The range input separator if you are setting $type to TYPE_RANGE for markup. Defaults to 'to'.

public string $separator 'to'
$size public property

The size of the input - 'lg', 'md', 'sm', 'xs'

public string $size null
$type public property

The markup type of widget markup must be one of the TYPE constants. Defaults to TYPE_COMPONENT_PREPEND

public string $type self::TYPE_COMPONENT_PREPEND
$value2 public property

The name of value for input number 2 if you are setting $type to TYPE_RANGE for markup.

public string $value2 null

Method Details

err() protected static method

Raise an invalid configuration exception.

protected static void err ( $msg '' )
$msg string

The exception message

throws yii\base\InvalidConfigException
initIcon() protected method

Initializes picker icon and remove icon

protected void initIcon ( $type, $bs3Icon, $bs4Icon )
$type string

The icon type 'picker' or 'remove'

$bs3Icon string

The icon suffix name for Bootstrap 3 version

$bs4Icon string

The icon suffix name for Bootstrap 4 version

parseMarkup() protected method

Parses the input to render based on markup type.

protected string parseMarkup ( $input )
$input string
registerAssets() public method

Registers the kartik\date\DatePicker widget client assets.

public void registerAssets ( )
renderAddon() protected method

Returns the addon to render

protected string renderAddon ( &$options, $type 'picker' )
$options array

The HTML attributes for the addon

$type string

Whether the addon is the picker or remove

renderDatePicker() protected method

Renders the date picker widget.

protected void renderDatePicker ( )
throws yii\base\InvalidConfigException
renderInput() protected method

Renders the source input for the DatePicker plugin.

protected string renderInput ( )
run() public method

Executes the widget.

public string|void run ( )
return string|void

The rendering result may be directly "echoed" or returned as a string

throws yii\base\InvalidConfigException
validateConfig() protected method

Validates widget configuration.

protected void validateConfig ( )
throws yii\base\InvalidConfigException