Un champ input text vide [Réglé]
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement
Ce que j'arrive à faire
J'utilise un formulaire qui insère le contenu des champs dans la base de donnée
J'ai besoin que certains champs puissent rester vides
Ce qui bloque
A partir du moment ou le champ est un FormFieldTextEditor (input de type texte sur une seule ligne), j'ai un retour d'erreur mysql si le champ est vide
Si je le transforme en tout autre type de champ (RichTextEditor, ShortMultiLine, Url, Number, etc...), l'article est validé avec le champ vide.
Je pourrai m'en contenter mais niveau ergonomie, c'est moyen, et un champ sur plusieurs lignes pour un seul mot, quel intérêt

Je n'ai bien sur mis aucune contrainte sur les input text
dans le build_form
Code PHP :
$options_details->add_field(new FormFieldTextEditor('option_1', $this->lang['option_1'], $this->get_mon_module()->get_option_1()));
dans le save
Code PHP :
$mon_module->set_option_1($this->form->get_value('option_1'));
coté setup du module j'ai testé
Code SQL :
'option_1' => array('type' => 'string', 'length' => 255, 'notnull' => 1, 'default' => "''"), 'option_1' => array('type' => 'string', 'length' => 255, 'notnull' => 0), 'option_1' => array('type' => 'text', 'length' => 255, 'notnull' => 1, 'default' => "''"), 'option_1' => array('type' => 'text', 'length' => 255, 'notnull' => 0),
=> résultats identiques
A noter qu'à l'installation du module, certains champs gérés par ces input text sont déclarés vides par défaut et le module s'installe sans erreur
Ai-je soulevé un bug ?
Est-il impossible d'utiliser les input text avec un champ vide ?
sinon, où est mon erreur ?
Édité par babsolune Le 29/10/2016 à 10h48
ElenWii Membre non connecté
-
Administrateur
- Voir le profil du membre ElenWii
- Inscrit le : 14/08/2009
- Site internet
- Groupes :
-
Equipe Graphique
si je regarde le code des autres modules, a l'installation, il n'y a pas de notnull.
'sources' => array('type' => 'text', 'length' => 65000),
par contre, trouve pas l'enregistrement.
Je n'ai que l'affichage dans le formulaire qui ne comporte pas de notnull ou required non plus.
Code JAVASCRIPT :
jQuery('<input/> ', {type : 'text', id : 'field_name_' + id, name : 'field_name_' + id, placeholder : '{@form.source.name}'}).appendTo('#' + id); jQuery('#' + id).append(' ');
===> Essaye sans le notnull ? Si cela fonctionne, je ne pourrais pas te donner d'explication
PaperToss Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre PaperToss
- Inscrit le : 25/03/2016
A mon avis, il faut faire un test de condition, si la valeur de option_1 === false, il faut envoyer NULL en bdd.
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement

@PaperToss
Avant j'aurai dit "Heu... rien compris", mais il semble que je commence à comprendre

dans le save du MonModuleFormController.class.php
Code PHP :
if (!empty($this->form->get_value('option_1'))) { $mon_module->set_company($this->form->get_value('option_1')); }else { $mon_module->set_option_1(null); }
Pour l'instant ça fonctionne à l'édition et à la création, mais vu mon niveau, c'est de l'ordre du divinatoire
, vague impression que ça va générer d'autres erreurs 
Merci PaperToss
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Code PHP :
$mon_module->set_company((string)$this->form->get_value('option_1'));
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement

quoi? non c'est pas parce que c'est la solution du chef et quelle est plus courte que je vais choisir celle là
PaperToss Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre PaperToss
- Inscrit le : 25/03/2016
et avec ça ?
Code PHP :
$mon_module->set_company((string)$this->form->get_value('option_1'));
Pas convaincu non plus, il va falloir faire mieux que ça

Pour ma défense, je suis sous mobile
ElenWii Membre non connecté
-
Administrateur
- Voir le profil du membre ElenWii
- Inscrit le : 14/08/2009
- Site internet
- Groupes :
-
Equipe Graphique
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
