Bonjour à tous,
Dans le cadre d'un développement d'un plugin pour un projet, je dois développer un formulaire qui contient un champ date.
Et là, mysère, j'ai pas arrêté de chercher ma solution. J'ai trouvé comment faire pour que quand l'utlisateur entre au format d/m/Y ca s'enregistre bien.
Mon soucis, c'est lors de la récupération des données.
J'ai tenté de manipuler l'affichage dans la méthode loadFormData() de mon modèle pour la mettre au format d/m/Y, mais une fois que c'est fais, ça ne marche pas car Joomla tente de le reparser en DateTime avec format américain.
Voici ma déclaration de field dans mon XML
Je pense que du fait que c'est Calendar il tente de reparser au format US, et donc impossible d'avoir dans le champ en édition une date au format correct ?
Voici le code de mon loadFormData qui fait planter le tout
Merci d'avance à celui qui pourra m'éclairer, notamment sur le fait que Joomla retransforme en DateTime mon string (quel intérêt ? ça sera un string qui s'affichera dans le textfield ...) et éventuellement, la méthode qui me permet de modifier le contenu juste avant de l'afficher (donc après que tous les traitements Joomla aient été fait)
Dans le cadre d'un développement d'un plugin pour un projet, je dois développer un formulaire qui contient un champ date.
Et là, mysère, j'ai pas arrêté de chercher ma solution. J'ai trouvé comment faire pour que quand l'utlisateur entre au format d/m/Y ca s'enregistre bien.
Mon soucis, c'est lors de la récupération des données.
J'ai tenté de manipuler l'affichage dans la méthode loadFormData() de mon modèle pour la mettre au format d/m/Y, mais une fois que c'est fais, ça ne marche pas car Joomla tente de le reparser en DateTime avec format américain.
Voici ma déclaration de field dans mon XML
Code:
<field name="op_date" type="calendar" label="COM_COMPTA_OPERATION_DATE" description="COM_COMPTA_OPERATION_DATE_DESC" class="inputbox" required="true" format="%d/%m/%Y" />
Voici le code de mon loadFormData qui fait planter le tout
Code PHP:
protected function loadFormData()
{
// Vérifier la session pour voir s'il y a déjà des données
$data = JFactory::getApplication()->getUserState('com_compta.edit.operation.data', array());
if (empty($data))
{
$data = $this->getItem(); //Sinon, les charger
if(!empty($data->op_date))
{
$date = new DateTime($data->op_date);//Format MySQL
$data->op_date = $date->format("d/m/Y");
}
}
return $data;
}
Commentaire