Comment ajouter des contraintes sur des Smart Fields du formulaires lors de la saisie ?
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement savoir Comment déclencher un code javascript lors de la sélection d’un menu spécifique ?.
Comment procéder ?
On souhaite ajouter une contrainte sur le titre des menus afin que la première lettre commence par une majuscule.
La méthode addConstraint
permet de charger une contrainte dans le Smart Element.
Recommandations
Si vous n’êtes pas familier avec la méthode addConstraint
, il est recommandé de lire la documentation associée
disponible ici
Modifier le fichier src/public/menuEdit.js
:
window.ank.smartElement.globalController.registerFunction("menuEdit", (controller) => {
controller.addEventListener("beforeValidate", function eventBeforeSave(event, documentObject, data) {
const description = controller.getValue("menu_description").value;
if (description == null) {
event.preventDefault();
controller.showMessage({
type: "error",
message: "Le menu n’a pas de description.",
});
}
const price = controller.getValue("menu_price").value;
if (price > 30) {
event.preventDefault();
controller.showMessage({
type: "warning",
message: "Le menu est au-dessus de 30 €",
});
}
});
controller.addEventListener("ready", function setMenuConstraint(event, smartElement) {
controller.addConstraint(
{
smartFieldCheck: (sf) => sf.id === "menu_title",
name: "menuTitleConstraint",
},
function (smartElement, smartField, values) {
const titleFirstChar = values.current.value.charAt(0);
const isFirstCharUpperCase = titleFirstChar.toUpperCase() === titleFirstChar;
if (!isFirstCharUpperCase) {
return `Le titre doit commencer par une majuscule`;
}
}
);
});
});
Vous pouvez maintenant déployer vos modifications :
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
Et voir le résultat sur un MENU en création ou modification :
http://localhost:8080/api/v2/smart-elements/MENU/views/!defaultCreation.html
Et ensuite ?
Comment rediriger vers une autre représentation après la sauvegarde ?