Le système de routing de Thelia

Publié le


La très grande majorité des URLs du core de Thelia qui gérent toutes les actions faites en front-office sont définies dans un module présent automatiquement lors de l'installation et qui se nomme : Front.

En effet, la gestion des URLs du front-office et du back-office ont logiquement été séparés.

Comment fonctionne le système d'URLs de Thelia ?

Le principe est assez simple et reste le même sur bon nombre de framework :

  1. L'internaute demande une URL, par exemple /login
  2. Le système analyse cette demande et fait la liaison entre l'adresse et la vue à afficher à l'utilisateur (la page de connexion)

Ce qui se passe en détail est un peu plus complexe mais vous n'aurez besoin que de cette notion pour suivre le tutoriel.

Cette « liaison » est définie dans un fichier bien précis du module Front, c'est le fichier Config/front.xml.

Restons sur l'exemple de l'URL de connexion qui est définie de la ligne 28 à 35 dans ce fichier :

<route id="customer.login.view" path="/login" methods="get">
    <default key="_controller">Front\Controller\CustomerController::viewLoginAction</default>
</route>
<route id="customer.login.process" path="/login" methods="post">
    <default key="_controller">Front\Controller\CustomerController::loginAction</default>
    <default key="_view">login</default>
</route>

Comme nous allons parler de « route » tout au long du tutoriel, sachez que ce mot bizarre indique simplement le couple url + action associée à cette url.

Ici l'URL est définie deux fois, une fois en méthode « get » et une fois en méthode « post ». Il va donc y avoir un comportement différent selon la méthode.

En effet, si vous accédez à la page de connexion via un lien ou bien directement en saisissant l'URL dans la barre d'adresse de votre navigateur, vous utilisez la méthode « get ». Par contre, lors de la soumission du formulaire de login, le formulaire envoie vos données en « post ».

Une route est définie par un id qui doit être unique pour éviter les conflits, un path pour spécifier l'URL à traiter et une méthode (methods) d'appel (celle-ci est facultative si le comportement n'est pas différent selon le type d'appel).

Au sein de cette déclaration, on peut spécifier de nombreuses choses et notamment un contrôleur et une vue.

Le contrôleur (controller) sera le fichier qui va traiter votre demande, ici CustomerController, qui va déclancher l'action loginAction.

La vue (view) sera le fichier template qui sera affiché à l'utilisateur, ici ce sera le template login. Il se peut aussi que la vue à retourner à l'utilisateur soit définie directement dans l'action du contrôleur.

Comment modifier les URLs ?

Nous pourrions très bien modifier directement le fichier front.xml du module Front mais le jour où ce module, qui s'installe avec Thelia, est mis à jour, vous ne bénéficierez pas de cette mise à jour ou bien vous perdrez vos modifications.

Nous allons donc respecter les bonnes pratiques et surcharger le fichier front.xml du module en créant un module dédié à la traduction des URLs anglaises du core de Thelia.

Ajouter votre commentaire

Les commentaires

Search