J'ai une série de cases à cocher sur mon formulaire qui, ensemble, forment un tableau lors du POST. Je souhaite enregistrer ces données sous forme de chaîne (par exemple, "##, ##, ##") avant de valider la base de données.
Voici ce que j'ai dans le fichier\models\composantname.php:
public function save($data)
{
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
if(isset($data['dancer_id'])) {
$data['dancer_id'] = implode(",", $data['dancer_id']);
}
if (parent::save($data))
{
return true;
}
return false;
}
Et voici le type de champ personnalisé que j'ai créé (\ models\fields\fieldname.php):
<div class="dancer"><input id="dancer_id" type="checkbox" name="dancer_id[]" value="XXX" />XXX</div>
Tous les autres champs du formulaire sont sauvegardés à l'exception de celui-ci. Des pensées? De plus, je ne suis pas sûr de savoir comment les données $ sont transmises à la fonction save () ... j'ai peut-être manqué un appel quelque part? Pour aller aussi loin, j'ai suivi le tutoriel du composant HelloWorld MVC sur le site Joomla et la réponse en ce fil connexe .
Je l'ai compris avec l'aide de quelqu'un des groupes Google Joomla DEV Google ( détails ): mon champ personnalisé dancer_id n'a pas été ajouté au tableau jform de la manière suivante:
<input id="dancer_id" type="checkbox" name="jform[dancer_id][]" value="2261" checked>
Une fois que j'ai fait, tout a fonctionné. Détails liés ci-dessus.
Avez-vous essayé d'extraire directement le formulaire sans utiliser JFilterInput?
Essaye ça:
remplacer:
$filter = JFilterInput::getInstance();
avec:
$dancers = $input->get('dancer','','array');
vous pouvez alors faire
$data['dancer_id'] = implode(",", $dancers);
De là, vous pouvez finir avec vos méthodes de sauvegarde