Calendario per data

Salve in un form autogenerato avrei la necessità di inserire un calendario al posto del campo input

avevo trovato datepicker e dalla documentazione :


echo DatePicker::widget([

    'model' => $model,

    'attribute' => 'from_date',

    //'language' => 'ru',

    //'dateFormat' => 'yyyy-MM-dd',

]);

ma mi dà :


Class 'DatePicker' not found



anche con use yii\jui\DatePicker;

Dove è questa classe?

Probabilmente ti manca l’estensione yii2-jui, su composer.json aggiungi




...

"yiisoft/yii2-jui": "*"

...



nella sezione require e poi, dalla root della tua app, dai composer update, fatto questo dovrebbe funzionarti :)

Inserito e aggiornato il composer .

Come lo devo impostare per prendere la data selezionata e inserirla nel db , nel mio model ho data…

Mentre ho questo errore :

The file or directory to be published does not exist: /home/u422195341/public_html/basic/vendor/bower/jquery-ui

mica ho capito che dici, comunque ti conviene leggerti un po’ di documentazione di quel widget.

Ciao ti ringrazio per avermi comunque risposto perchè nel forum italiano tranne te e qualcun altro , non risponde mai nessuno…

Ho letto la documentazione come mi hai dettop di fare e poichè la uso in un active form , da documentazione ho dato al form (per il casmpo data ) :


    <?= $form->field($model,'data')->widget(DatePicker::className(),['clientOptions' => ['defaultDate' => '1990-01-01']]) ?>



Ma ho questo errore (che se rimetto il campo come stringa sparisce):


The file or directory to be published does not exist: /home/u422195341/public_html/basic/vendor/bower/jquery-ui

Sembra un problema di installazione del pacchetto o di path…

Con solo queste info non so aiutarti.

Ecco il form :




<?php


use yii\helpers\Html;

use yii\widgets\ActiveForm;

use  yii\jui\DatePicker;


/* @var $this yii\web\View */

/* @var $model app\models\Film */

/* @var $form yii\widgets\ActiveForm */

?>


<div class="film-form">

    <?php

         $id=Yii::$app->user->identity->id;

         $t=time();

         $data=date("Y-m-d-G-i-s",$t);




     ?>





    <?php $form = ActiveForm::begin(); ?>


     <div class="row">

        <div class="col-md-6">

            

               

        


    <?= $form->field($model, 'nome')->textInput(['maxlength' => 50]) ?>


    <?= Html::activeHiddenInput($model,'utente',array('value'=>$id))?>


 


    <?= $form->field($model, 'trailer')->textInput(['maxlength' => 300]) ?>


    


    <?= $form->field($model, 'mymovies')->textInput(['maxlength' => 300]) ?>


    <?/*=  DatePicker::widget([

    'model' => $model,

    'attribute' => 'data',

    'language' => 'it',

    'dateFormat' => 'yyyy-MM-dd',

]); */?>


    <?= $form->field($model,'data')->widget(DatePicker::className(),['clientOptions' => ['defaultDate' => '1990-01-01']]) ?>

    <?= Html::activeHiddenInput($model,'data_ins',array('value'=>$data)) ?>


    


    <?= $form->field($model, 'q_video')->dropDownList(

                                                                    ['1'=>'1',

                                                                     '2'=>'2',

                                                                     '3'=>'3',

                                                                     '4'=>'4',

                                                                     '5'=>'5',

                                                                     '6'=>'6',

                                                                     '7'=>'7',

                                                                     '8'=>'8',

                                                                     '9'=>'9',

                                                                     '10'=>'10',]

        );   ?>


         <?= $form->field($model, 'q_audio')->dropDownList(

                                                                    ['1'=>'1',

                                                                     '2'=>'2',

                                                                     '3'=>'3',

                                                                     '4'=>'4',

                                                                     '5'=>'5',

                                                                     '6'=>'6',

                                                                     '7'=>'7',

                                                                     '8'=>'8',

                                                                     '9'=>'9',

                                                                     '10'=>'10',]

        );   ?>

    

        </div>


             <div class="row">

        <div class="col-md-6">

            

               

        


   


    <?= $form->field($model, 'copertina')->textInput(['maxlength' => 300]) ?>


    <?= $form->field($model, 'genere')

        ->dropDownList(

            ['Animazione'=>'Animazione',

                                                                     'Avventura'=>'Avventura',

                                                                     'Azione'=>'Azione',

                                                                     'Balletto'=>'Balletto',

                                                                     'Biografico'=>'Biografico',

                                                                     'Commedia'=>'Commedia',

                                                                     'Documentario'=>'Documentario',

                                                                     'Drammatico'=>'Drammatico',

                                                                     'Epico'=>'Epico',

                                                                     'Erotico'=>'Erotico',

                                                                     'Fantascienza'=>'Fantascienza',

                                                                     'Giallo'=>'Giallo',

                                                                     'Guerra'=>'Guerra',

                                                                     'Horror'=>'Horror',

                                                                     'Musical'=>'Musical',

                                                                     'Noir'=>'Noir',

                                                                     'Spionaggio'=>'Spionaggio',

                                                                     'Storico'=>'Storico',

                                                                     'Thriller'=>'Thriller',

                                                                     'Western'=>'Western',]

        );   ?>


    <?= $form->field($model, 'durata')->textInput() ?>


    


    <?= Html::activeHiddenInput($model,'data_ins',array('value'=>$data)) ?>


    <?= $form->field($model, 'trama')->textarea(['rows' => 6]) ?>




   

        </div>

    </div>

    <div class="row">

        <div class="col-md-6">

            <h2>Sezione riservata al download</h2>

                <?= $form->field($model, 'nome_link1')->textInput(['maxlength' => 20]) ?>


                <?= $form->field($model, 'link1')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link1b')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link1c')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link1d')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'nome_link2')->textInput(['maxlength' => 20]) ?>


                <?= $form->field($model, 'link2')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link2b')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link2c')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link2d')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'nome_link3')->textInput(['maxlength' => 20]) ?>


                <?= $form->field($model, 'link3')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link3b')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link3c')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link3d')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'nome_link4')->textInput(['maxlength' => 20]) ?>


                <?= $form->field($model, 'link4')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link4b')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link4c')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link4d')->textInput(['maxlength' => 100]) ?>    

        </div>

   

    

   

        <div class="col-md-6">

            <h2>Sezione riservata allo streaming</h2>

                <?= $form->field($model, 'nome_link5')->textInput(['maxlength' => 20]) ?>


                <?= $form->field($model, 'link5')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link5b')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link5c')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link5d')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'nome_link6')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link6')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link6b')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link6c')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link6d')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'nome_link7')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link7')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link7b')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link7c')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link7d')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'nome_link8')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link8')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link8b')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link8c')->textInput(['maxlength' => 100]) ?>


                <?= $form->field($model, 'link8d')->textInput(['maxlength' => 100]) ?>


                

        </div>

    </div>


    


    <div class="form-group">

        <?= Html::submitButton($model->isNewRecord ? 'Inserisci Film' : 'Modifica Film', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>

    </div>


    <?php ActiveForm::end(); ?>


</div>




Il tuo non è un problema di codice PHP ma di installazione dell’estensione jui.

Incolla il contenuto del tuo composer.json

Eseguito un update ora funziona.

Ora veniamo al dunque , nel db io ho la data 4giorni per l’anno , 2 per il mese e due per il giorno , quindi ho messo così il form :




 <?= $form->field($model,'data')->widget(DatePicker::className(),['clientOptions' => 

        [ 'defaultDate' => '2010-01-01','language' => 'it',

    'dateFormat' => 'yyyy-mm-dd',]]);




   ; ?>



I problemi sono molti :

1- Cliccando nel campo data appare il calendario ma la data in alto è ‘Mag 2020’ mentre io vorrei fosse come defaultDate

2- Anche inserendo la data correttamente 2010-12-12 mi dice Il formato di Data Uscita non è valido. e nel campo ho Dec 12, 2010

La gestione delle date è sempre una rogna e ci sono millemila modi possibili per gestirla, comunque ti consiglio un paio di estensioni da usare per facilitarti la vita:

Date control e il suo Date Picker.

Altrimenti se cerchi nel forum internazionale trovi un sacco di soluzioni per la gestione delle date nei vari formati…