blog sur le développement web, jquery,css3, Magento, Symphony, php et bien d'autres choses

Articles tagués ‘probleme de date magento’

enregistrer une date dans magento

logo magento

J’ai écris cette article car si comme moi un jour vous avez eu à construire un formulaire dans lequel devait figurer des champs date, vous avez du surement vous confrontez à des problèmes lors de l’enregistrement en base de données SQL. Nous allons donc voir comment mettre en place un field de type date dans un formulaire Magento, puis comme enregistrer la date en base de données.

Cette solution m’a été révellé par CaPiT du chat Magento

commençons d ‘abord par ajouter notre field date à notre form.

dans la methode _prepareform nous allons declarer notre field magento de type date:

// n'oubliez pas de déclarer le format de la date, pour ma part il
// s'est trouvé que ce format ne posait pas de problème

$dateFormatIso = Mage::app()->getLocale()
                 ->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT);

$fieldset->addField('ValidFrom', 'date', array(
 'name'      => 'date_from',
 'format'    => $dateFormatIso,
 'image'     => $this->getSkinUrl('images/grid-cal.gif'),
 'label'     => Mage::helper('amersalesorgmanager')->__('From'),
 'title'     => Mage::helper('amersalesorgmanager')->__('From'),
 'value'     => $current_freight->getdate_from(),
 'required'  => true
 ));

voila normalement notre champs date est ajouté dans notre formulaire magento.

Voyons maintenant dans la partie controler comment enregistrer cette date.
On aura pris soin evidement de creer une fonction magento saveAction
pour sauvegarder ou updater l’objet que l’on veut.

dans cette fonction on aura donc:

// je charge mon modele en fonction de l'id que je reçois
$model = Mage::getModel('amersalesorgmanager/freightterms')
         ->load($freightid);

// je redeclare le format que je souhaite utiliser
$dateFormatIso = Mage::app()->getLocale()
    ->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT);

// je format ma date avec le format declarer juste avant
$dateFrom = Mage::app()->getLocale()
            ->date($this->getRequest()
            ->getParam('date_from'),$dateFormatIso,null,false);

// enfin j'enregistre mon objet avec la date que j'ai recuperé
$model->setdate_from(
             $dateFrom->toString(Varien_Date::DATETIME_INTERNAL_FORMAT));

voila normalement votre date est correctement enregistrée en base de données.

évidement j’ai débroussaillé mon code pour vous montrer l’essentiel,

ça fera bondir les puristes de voir ce code magento là ^^

Pour finir, si vous aussi vous rencontrez des problèmes de lenteurs sur votre boutique je vous conseil de jeter un oeil à cet article sur l’optimisation de Magento

Suivre

Recevez les nouvelles publications par mail.

Rejoignez 295 autres abonnés