Je suis en train de valider un formulaire personnalisé côté administrateur et ci-dessous, l'exemple de code javascript
Joomla.submitbutton = function(task)
if(condition){
document.getElementById('jform_acc_reseller_id').required=true;
document.formvalidator.isValid(document.id('account-form'));
return;
}
Le code ci-dessus montre simplement le message d'erreur standard comme ci-dessous
Champ invalide: le libellé du champ
J'aimerais plutôt afficher un message d'erreur personnalisé, comme ci-dessous.
Champ non valide: libellé du champ: veuillez sélectionner un utilisateur revendeur
Comment est-ce possible?
Disons que j'ai validateur personnalisé "validemail" ajouté dans mon formulaire XML:
<field
type="text"
label="COM_HELPDESK_CC_LABEL"
description="COM_HELPDESK_EMAIL_DESCRIPTION"
name="cc"
class="form-control validate-validemail"
validate = "validemail"
/>
Le code de validation côté serveur réside dans: components/my_component/models/rules/validemail.php
use Joomla\Registry\Registry;
JFormHelper::loadRuleClass('email');
class JFormRuleValidemail extends JFormRuleEmail {
public function test(SimpleXMLElement $element, $value, $group = null, Registry $input = null, JForm $form = null) {
$emails = array($value);
if (strpos($value, ';') !== false) {
$emails = explode(';', $value);
}
else if (strpos($value, ',') !== false) {
$emails = explode(',', $value);
}
foreach ($emails as $email) {
if (!parent::test($element, trim($email))) {
$element->addAttribute('message', JText::_('YOUR_ERROR_MESSAGE'));
return false;
continue;
}
}
return true;
}
}
Pour la validation côté client, ajoutez le script suivant à votre composant (back-end/front-end)
jQuery('.validate').click(function (e) {
var msg = {"error": []};
if (jQuery('#jform_bcc').hasClass('invalid')) {
msg.error.Push(Joomla.JText._('COM_HELPDESK_BCC_ERROR'));
}
if (jQuery('#jform_cc').hasClass('invalid')) {
msg.error.Push(Joomla.JText._('COM_HELPDESK_CC_ERROR'));
}
if (jQuery('#jform_priority').hasClass('invalid')) {
msg.error.Push(Joomla.JText._('COM_HELPDESK_PRIORITY_ERROR'));
}
if (jQuery('#jform_description').hasClass('invalid')) {
msg.error.Push(Joomla.JText._('COM_HELPDESK_DESCRIPTION_ERROR'));
}
if (jQuery('#jform_subject').hasClass('invalid')) {
msg.error.Push(Joomla.JText._('COM_HELPDESK_SUBJECT_ERROR'));
}
Joomla.renderMessages(msg);
e.preventDefault();
});
});
Placez ces chaînes de langue dans votre fichier .ini
COM_HELPDESK_SUBJECT_ERROR = "Please Enter Subject"
COM_HELPDESK_DESCRIPTION_ERROR = "Please Enter Description"
COM_HELPDESK_PRIORITY_ERROR = "Please Select Priority"
COM_HELPDESK_CC_ERROR = "Please Enter proper Emails in CC section"
COM_HELPDESK_BCC_ERROR = "Please Enter proper Emails in BCC section"
N'oubliez pas d'enregistrer ces messages dans votre fichier view.html.php:
JText::script('COM_HELPDESK_SUBJECT_ERROR');
JText::script('COM_HELPDESK_DESCRIPTION_ERROR');
JText::script('COM_HELPDESK_PRIORITY_ERROR');
JText::script('COM_HELPDESK_CC_ERROR');
JText::script('COM_HELPDESK_BCC_ERROR');