venerdì 1 novembre 2013

Implementare il tipo Datetime in Extbase

TYPO3, normalmente usa il tipo timestamp salvando in formato int su database per indicare una data. Il grande vantaggio di questo tipo di approccio è che si lavora solo con dei numeri interi.

Con le nuove versioni di PHP sta però diventando sempre più comodo usare il tipo Datetime sia in PHP che nel database. Oggi con Extbase 6 (TYPO3 6.X) è possibile utilizarlo in maniera completa anche nelle entità consentendo quindi una grande flessibilità alle estensioni.

 Ecco come configurare il nostro sistema: Il modello diventa:
class MyEntity extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
    
    /**
     * @var \DateTime
     */
    protected $date;

    //put your code...
}
poi bisogna specificare a Extbase che l'elemento sarà salvato in una colonna di tipo datetime e questo lo si fa nella TCA:
   //General Table and ctrl section definition ...

   'columns' => array(
        'date' => array(
            'exclude' => 1,
            'config' => array(
                'dbType' => 'datetime',
                'type' => 'input',
                'eval' => 'datetime'
            ),
        ),
        // other column ...
I parametri importanti sono due:  
dbType, che definisce come sarà salvato nel database e i possibili valori sono: date o datetime, in base al tipo di colonna date o datetime, nel primo caso sarà salvato nel formato 'Y-m-d' nel secondo 'Y-m-d H:i:s'.  
Eval, che deve contenere il tipo date o datetime. Fatto questo nel database sarà salvato il datetime e il property mapper farà poi le relative mappature.

Nessun commento:

Posta un commento