L’installazione di Yii2 si esegue utilizzando “composer“. Per installare Composer si esegua il seguente comando:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
In windows si può usare il comodo comando https://getcomposer.org/Composer-Setup.exe
Dopo aver installato composer è preferibile fare l’update:
composer self-update
Il comando per scaricare Yii2 si occupa di creare anche un progetto di base:
composer create-project --prefer-dist yiisoft/yii2-app-basic basic
Se il comando precedente restituisce l’errore che non è installato l’estensione php-dom, si può installare tale estensione con il comando:
sudo apt install php8.0-dom
Allo stesso modo, potrebbe mancare anche l’estensione php-curl, installabile con il seguente comando:
sudo apt install php8.0-curl
Il comando precedente predisporrà un ambiente con il framework Yii all’interno del direttorio basic.
Istruzioni più dettagliate possono essere trovate alla pagina: https://www.yiiframework.com/doc/guide/2.0/en/start-installation
Per verificare se tutto funziona si può usare il comando seguente:
php yii serve
il quale lancia un server WEB minimale che può essere interrogato all’indirizzo http://localhost:8080/
Nella pagina dei contatti raggiungibile dalla home del sito potrebbe presentarsi un problema con una libreria mancante (gd). In tal caso la libreria può essere installata con il seguente comando:
sudo apt install php8.0-gd
e successivamente va abilitata la relativa estensione all’interno del php.ini, scommentando la riga che contiene extension=gd nel file /etc/php/8.0/apache2/php.ini o anche nel file /etc/php/8.0/cli/php.ini.
Se si desidera installare anche il framework jui per i widget in stile jquery ui, si deve lanciare il comando:
composer require --prefer-dist yiisoft/yii2-jui "*"
dall’interno del direttorio basic.
La stessa cosa va fatta per aggiungere le estensioni widgets. Invece di lanciare a mano il comando composer, è sufficiente inserire le seguenti linee all’interno del file basic/composer.json:
"yiisoft/yii2-bootstrap5": "@dev",
"yiisoft/yii2-jui": "*",
"kartik-v/yii2-datecontrol": "@dev",
"kartik-v/yii2-widgets": "@dev",
"kartik-v/yii2-widget-datepicker": "dev-master",
"twbs/bootstrap-icons":"*"
e lanciare il comando (dal direttorio basic)
composer update
DatePicker utilizza bootstrap 5, che va instanziato con la seguente riga all’interno di basic/config/params.php
'bsVersion' => '5.x'
Va configurato anche il modulo datecontrol, aggiungendo le seguenti righe (dentro web.php) prima di ‘params’ => …
'modules' => [
'datecontrol' => [
'class' => 'kartik\datecontrol\Module',
'widgetSettings' => [
'displaySettings' => [
kartik\datecontrol\Module::FORMAT_DATE => 'dd-MM-yyyy',
kartik\datecontrol\Module::FORMAT_TIME => 'hh:mm:ss a',
kartik\datecontrol\Module::FORMAT_DATETIME => 'dd-MM-yyyy hh:mm:ss a',
],
// format settings for saving each date attribute (PHP format example)
'saveSettings' => [
kartik\datecontrol\Module::FORMAT_DATE => 'php:U', // saves as unix timestamp
kartik\datecontrol\Module::FORMAT_TIME => 'php:H:i:s',
kartik\datecontrol\Module::FORMAT_DATETIME => 'php:Y-m-d H:i:s',
],
]
],
],
le quali indicano al sistema quale deve essere la formattazione per i campi Date e DateTime sia in maschera che durante il salvataggio.
Per sicurezza, ho aggiunto, sempre all’interno di web.php, nell’area components le seguenti righe:
'formatter' => [
'dateFormat' => 'dd-MM-Y',
'datetimeFormat' => 'dd-MM-Y H:i:s',
'timeFormat' => 'H:i:s',
'locale' => 'it-IT', //your language locale
'defaultTimeZone' => 'Europe/Rome', // time zone
],
yii2::DatePicker utilizza bootstrap5 e di conseguenza font-awesome5.
Pertanto, per farlo funzionare è necessario inserire nel layout di base delle views (views/layouts/main.php), nella sezione head il seguente link:
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css"/>
A questo punto si possono utilizzare i datepicker di jquery ui all’interno delle pagine, con il seguente comando:
<?= $form->field($model, 'DtCreazione')->widget(DateControl::classname(), [
'displayFormat' => 'php:d-M-Y H:i:s',
'type'=>DateControl::FORMAT_DATETIME
]); ?>