Les pages et le routage
Une page est une entrée de menu : un enregistrement de BSPK_WEB_DOMAIN_MENU, lui-même rattaché à un BSPK_WEB_DOMAIN. Les blocs la désignent par webDomainMenuUuid.
Les champs qui décident si une URL répond
La table des pages compte 25 champs. Voici ceux qui comptent quand une page ne répond pas :
| Champ | Effet |
|---|---|
publish | False donne une 404. Pas une page cachée : une page absente |
publishStart / publishEnd | Publication limitée dans le temps, appliquée à la page elle-même |
urlParts | Les segments de l'URL |
useName / useNameAsPrefix | Si le nom entre dans la construction de l'URL |
autoUpdate | Si l'URL est régénérée quand le nom change |
displayInMenu | Le menu seulement. Sans effet sur le fait que l'URL réponde |
isHomepage | Le point d'entrée du domaine |
tableName | La table à laquelle se lie une page de détail |
userRightUuid / editRightUuid | Qui peut consulter, qui peut modifier |
Piège :
displayInMenuet les règles de visibilité pilotent le MENU, pas le service. Une page absente du menu reste servie à quiconque connaît son URL. Pour la fermer réellement, utilisez les droits ou dépubliez-la.
Créer une page par l'API
Deux échecs, fréquents tous les deux :
publish: trueest obligatoire, sinon toutes les requêtes renvoient une 404. Une fois la page publiée, la route répond sans redémarrage.urlParts,useNameetautoUpdatedoivent être cohérents. Une page créée sans eux n'a pas d'URL utilisable et renvoie une 404 alors que l'enregistrement existe.
Régénérer une URL ne fait rien, en silence, quand autoUpdate vaut faux : le nom change, l'URL non, et rien ne le signale.
Les pages dynamiques
Une page liée à une table reçoit la clé de l'enregistrement dans l'URL. Deux règles :
?pk=est réservé par le routeur. N'utilisez jamais ce nom de paramètre pour vos propres besoins.- En 4D, la clé de l'enregistrement courant arrive dans
$vo_POST.pk.
Le libellé du fil d'Ariane suit une cascade : l'expression (pageLabelExpression), puis un paramètre d'URL, puis le nom de la page.
Les pages multilingues
languageOptions et le lien vers la page alternative portent l'équivalence entre les versions linguistiques. Une équivalence de langue redirige avec un 301, pas un 302 : le déplacement est définitif, et les moteurs de recherche doivent oublier l'ancienne URL.
Les réglages au niveau du domaine
BSPK_WEB_DOMAIN décide de ce que reçoivent les pages : templateType (quelle enveloppe de page : tpl-page1, tpl-page2…), useSpa, useWebSocket, useWebApp, les balises de mesure d'audience, et loginPageUuid.
Les écrans d'administration
Les écrans /bweb/* suivent le même modèle, mais sont rendus à partir de gabarits enregistrés. Deux points qui piègent :
- l'accès passe par un droit
ADMIN_<SLUG>, pas par un codeDEVécrit en dur ; - le bloc
modalstandard n'y fonctionne pas (voir Modal).
Voir aussi
- Le cycle d'une requête : l'ordre dans lequel tout cela est évalué
- La sécurité : les droits revérifiés à chaque POST

