Yii2: kartik/DateTimePicker prevent selection of a date before today - php

I have tried with below code and it is not working for me.
echo $form->field($model, 'value')->widget(DateTimePicker::classname(), [
'pluginOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-dd HH:ii:ss',
'minuteStep' => 1,
'todayHighlight' => true,
'startDate' => date("y-m-d H:i:s"),
'changeYear' => true,
'changeMonth' => true,
]
])->label('Select date & time');

It works for me as below:
$form->field($model, 'value')->widget(DateTimePicker::classname(), [
'options' => ['placeholder' => 'Enter Value'],
'pluginOptions' => [
'autoclose' => true,
'format' => 'Y-m-d H:i:s',
'startDate' => date('Y-m-d H:i:s')
]
]);

Add 'minDate' => 0 to disable previous date selection from today.
Updated Code
echo $form->field($model, 'value')->widget(DateTimePicker::classname(), [
'pluginOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-dd HH:ii:ss',
'minuteStep' => 1,
'minDate' => 0,
'todayHighlight' => true,
'startDate' => date("y-m-d H:i:s"),
'changeYear' => true,
'changeMonth' => true,
]
])->label('Select date & time');

echo $form->field($model, 'value')->widget(DateTimePicker::classname(), [
'pluginOptions' => [
'minuteStep' => 1,
'minDate' => 0,
'startDate' => date("y-m-d H:i:s"),
]
])

You can use the following i assume you are using kartik\widgets\DateTimePicker
$form->field($model, 'campaign_schedule', [
'inputOptions' =>
[
'value' => date('Y-m-d H:i:s'),
],
])->widget(kartik\widgets\DateTimePicker::class, [
'options' => ['placeholder' => 'Select operating time ...'],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:ii:ss',
'todayHighlight' => true,
'startDate' => new JsExpression("new Date('" . date('m/d/y') . "')"),
'autoclose' => true,
],
])

Related

Yii2 kartik datetime picker retain value after page submitting

I am using yii2-widget-datetimepicker in my yii2 project. I want to retain the value of it after submitting the page.
<form action="index" method="post" >
<?=
DateTimePicker::widget([
'name' => 'datetime_10',
'options' => [
'placeholder' => 'Start Date Time',
'autocomplete' => 'off',
'required' =>true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
<?=
DateTimePicker::widget([
'name' => 'datetime_11',
'options' => [
'placeholder' => 'End Date Time',
'autocomplete' => 'off',
'required' =>true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
</form>
How to retain the selected date-time value? Any help would be highly appreciated.
Without further tweaks, you could do
<form action="index" method="post">
<?=
DateTimePicker::widget([
'name' => 'datetime_10',
'value' => Yii::$app->request->post('datetime_10', null),
'options' => [
'placeholder' => 'Start Date Time',
'autocomplete' => 'off',
'required' => true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
<?=
DateTimePicker::widget([
'name' => 'datetime_11',
'value' => Yii::$app->request->post('datetime_11', null),
'options' => [
'placeholder' => 'End Date Time',
'autocomplete' => 'off',
'required' => true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>
</form>
But this is not reliable. If you are gathering data throughout multiple pages, you should really consider storage/persistence, at least session & save to database after all the forms are completed, or skip session and go directly with in-memory data, a database etc.
You should assigne a value realted to your nodel->field and assigne/reassigne the value you need after (or before ) subimit
<?=
DateTimePicker::widget([
'name' => 'datetime_10',
'value' => $yourModel->yourField, // <------ this
'options' => [
'placeholder' => 'Start Date Time',
'autocomplete' => 'off',
'required' =>true,
],
'convertFormat' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-dd hh:i:ss',
//'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true,
'autoclose' => true,
]
]);
?>

How to use onSelect event in Kartik datePicker?

I am using kartik datePicker in my site but whenever I try to use onSelect event the doesn't triggered I don't know what is the problem. I searched a lot but didn't find any solution.
This is my code:
<?php
echo DatePicker::widget([
'name' => 'check_issue_date',
'type' => DatePicker::TYPE_INLINE,
'options' => ['placeholder' => 'Select issue date ...', 'id' => 'date-picker'],
'pluginOptions' => [
'format' => 'dd-M-yyyy',
'todayHighlight' => false,
'onSelect' => 'function(dateText, inst) {
alert("hello");
}'
]
]);
?>
Look at pluginEvents on this page http://demos.krajee.com/widget-details/datepicker#settings
<?php echo DatePicker::widget([
'id'=>'scheduleProject',
'name' => 'scheduleProject',
'type' => DatePicker::TYPE_INLINE,
'language' => 'en',
'pluginOptions' => [
'format' => 'M-dd-yyyy',
'startDate' => date(\Yii::$app->params['viewDateFormat']),
'todayHighlight' => true,
'todayBtn' => true,
],
'pluginEvents' =>[
"changeDate" => "function(e) { alert(123)}",
]
]);?>
echo DatePicker::widget([
'name' => 'check_issue_date',
'type' => DatePicker::TYPE_INLINE,
'options' => ['placeholder' => 'Select issue date ...', 'id' => 'date-picker'],
'pluginOptions' => [
'format' => 'dd-M-yyyy',
'todayHighlight' => false,
'onSelect' => 'function(dateText, inst) {
alert("hello");
}'
],
'pluginEvents' => [
'onChange' => 'function(event) {
console.log(event.date);
}'
]
]);
?>

yii2 kartik 'fileActionSettings' not working

My code is:
<?= $form->field($model, 'imageFiles[]')->widget(FileInput::classname(), [
'options' => ['multiple' => true, 'accept' => 'image/*', 'id'=>'inputFile'],
'pluginOptions' => [
'rtl'=>'true',
'fileActionSettings'=>['showZoom'=>true, 'showRemove' =>true,
'showDrag'=>true],
previewFileType' => 'image',
'maxFileCount' => 4,
'showUpload' => false,
],
]);
but 'fileActionSettings' not working for me and The buttons are not displayed, please help me if I'm wrong.

Yii2: Combining Kartik's FileInput & Kartik's DetailView

I'm trying single-file uploads using Kartik's FileInput.
Things go fine when doing this through standard create form as the following returns non-null:
$filedata = UploadedFile::getInstance($model, 'filedata');
However it always returns null when going into Kartik's DetailView in edit mode and trying to update the file.
In view.php I have:
[
'attribute' => 'filedata',
'visible' => Yii::$app->user->can('doIt'),
'type' => DetailView::INPUT_FILEINPUT,
'rowOptions' => ['class' => 'kv-view-hidden'],
'widgetOptions' => ['options' => ['accept' => 'application/pdf'],
'pluginOptions' => [
'showUpload' => false,
'allowedFileExtensions' => ['pdf'],
'initialCaption' => $model->filename,
],
'pluginEvents' => [
'filecleared' => <whatever>,
'fileloaded' => <whatever>,
],
],
],
while in _form.php (which does work):
<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
<?= $form->field($model, 'filedata')->widget(FileInput::classname(), [
'options' => ['accept' => 'application/pdf'],
'pluginOptions' => [
'showUpload' => false,
'allowedFileExtensions' => ['pdf'],
'initialCaption' => $model->getOldAttribute('filename'),
],
'pluginEvents' => [
'filecleared' => <whatever>,
'fileloaded' => <whatever>,
],
])
?>
Any ideas? (BTW, don't know whether 'multipart/form-data' is needed somehow in view.php as it is in _form.php, so anyone confirming this and giving some details should be welcome).
Of course, multipart/form-data is needed both in _form.php and view.php as well, as follows:
'formOptions' => ['options' => ['enctype' => 'multipart/form-data']],
'attributes' => [
...
[
'attribute' => 'filedata',
'visible' => Yii::$app->user->can('doIt'),
'type' => DetailView::INPUT_FILEINPUT,
'rowOptions' => ['class' => 'kv-view-hidden'],
'widgetOptions' => ['options' => ['accept' => 'application/pdf'],
'pluginOptions' => [
'showUpload' => false,
'allowedFileExtensions' => ['pdf'],
'initialCaption' => $model->filename,
],
'pluginEvents' => [
'filecleared' => <whatever>,
'fileloaded' => <whatever>,
],
],
],
....
]

yii 2 date picker only allow before today

echo $form->field($model, 'dob')->widget(DatePicker::classname(), [
'options' => [
'placeholder' => Yii::t('app', 'Please pick your birth-date'),
],
'type' => DatePicker::TYPE_INPUT,
'pluginOptions' => [
'autoclose'=>true,
'format' => 'dd/mm/yyyy',
'startView' => 1,
],
])->label(Yii::t('app', 'Date of Birth'));
The code above is used to create a DatePicker in yii 2. Is it possible for me to only allow users to select date before today?
Yes, you can the future dates disable by endDate property of pluginOptions.
echo $form->field($model, 'dob')->widget(DatePicker::classname(), [
'options' => [
'placeholder' => Yii::t('app', 'Please pick your birth-date'),
],
'type' => DatePicker::TYPE_INPUT,
'pluginOptions' => [
'autoclose'=>true,
'format' => 'dd/mm/yyyy',
'startView' => 1,
'endDate'=>date('d/m/Y')
],
])->label(Yii::t('app', 'Date of Birth'));

Categories