C’est le champ dans le formulaire côté administrateur qui doit être demandé.
<field name="exam_name"
type="text"
label="Name"
required="true" />
Dans le formulaire, si je laisse ce champ vide (null), une erreur de validation indiquant un champ non valide s'affiche.
Mais si je laisse un espace, il soumet la page et l'espace stockés dans la base de données.
Existe-t-il un moyen de valider le formulaire même si un champ particulier a un espace au lieu de vide?
Vous pouvez utiliser la validation côté client. Donc, premièrement, ajoutez ce qui suit à la vue formulaire (Choisissez-en une en fonction de votre version de Joomla)
JHtml::_('behavior.formvalidation'); // Joomla 3.3
JHtml::_('behavior.formvalidator'); // Joomla 3.4
Ajoutez ensuite le form-validate
classe à votre formulaire si cela ressemble à ceci:
<form class="form-validate">
Ajoutez ensuite les classes requises à votre champ de formulaire de la manière suivante:
<field name="exam_name" class="required validate-custom"
Puis appliquez la même chose à votre bouton d'envoi de formulaire, comme suit:
<input type="submit" class="required validate-custom"
Et enfin, vous pouvez utiliser le jQuery suivant:
jQuery(document).ready(function($){
document.formvalidator.setHandler('custom', function (value) {
// Perform your validation for blank spaces
// You could use a regex or maybe trim the value
// Whatever method you prefer
});
});
Si votre modèle étend JModelAdmin ou JModelForm, vous pouvez utiliser sa fonction de validation pour valider l'entrée client avant de l'enregistrer dans la base de données.
class MyComponentModelForm extends JModelAdmin
{
....
....
/* Override */
public function validate($form, $data, $group = null)
{
$data = parent::validate($form, $data, $group = null);
if(!$data || empty($data['myfield']))
{
JFactory::getApplication()->enqueueMessage(JText::_('COM_MYCOMPONENT_FIELD_REQUIRED'));
return false;
}
return $data;
}
}