[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"theme-db":3,"$fplPP2xvYUIzp_sdUGlh6re8vElqHSQ00JNUinsh_LaI":22,"$fKnz2vuX4bZz1LbUTiuFsvSZ3e07l5_5fqNYp4Tzdhi8":63,"megamenu":144,"header-db":200,"$fzSHd8PPsR3UCJnfcmQUCduF0haeDP3P14YWd4KfiTeE":213,"footer-db":227},{"theme":4},{"colors":5,"typography":13,"ui":17,"defaultColorMode":21},{"primary":6,"secondary":7,"background":8,"foreground":9,"muted":10,"headerBg":11,"footerBg":12,"topBarBg":9,"topBarText":11},"#4F46E5","#0D9488","#F9FAFB","#111827","#6B7280","#ffffff","#020617",{"fontFamily":14,"fontUrl":15,"baseFontSize":16},"Inter, system-ui, sans-serif","https:\u002F\u002Ffonts.googleapis.com\u002Fcss2?family=Inter:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,400;0,700;0,800;0,900;1,400;1,700&display=swap","16px",{"borderRadius":18,"contentWidth":19,"shadow":20},"lg","7xl",true,"light",{"title":23,"slug":24,"metaDescription":25,"category":26,"tags":27,"difficulty":33,"psVersions":34,"content":38,"faq":39,"tldr":58,"readingTime":59,"generatedAt":60,"publishDate":60,"relatedArticles":61,"sourceCategory":62},"Ajouter un champ personnalisé au formulaire d'inscription PrestaShop","ajouter-champ-personnalise-formulaire-inscription-prestashop","Guide complet pour ajouter un champ personnalisé (ex : case majeur) au formulaire de création de compte PrestaShop avec validation et message d'erreur custom.","developpement",[28,29,30,31,32],"formulaire inscription","override controller","champ personnalisé","AuthController","validation client","intermediaire",[35,36,37],"1.6","1.7","8.x","\u003Ch2>Pourquoi ajouter un champ personnalisé à l'inscription ?\u003C\u002Fh2>\n\u003Cp>Certaines obligations légales ou métier imposent de collecter des informations supplémentaires lors de la création de compte. L'exemple classique : une case à cocher confirmant que l'utilisateur est majeur, un numéro SIRET pour une boutique B2B, ou encore un code parrainage.\u003C\u002Fp>\n\u003Cp>PrestaShop ne propose pas cette fonctionnalité nativement. Il faut intervenir sur trois niveaux : la base de données, le contrôleur d'authentification et le template du formulaire. Voyons comment procéder proprement sans toucher au cœur de PrestaShop.\u003C\u002Fp>\n\u003Ch2>Étape 1 : Ajouter la colonne en base de données\u003C\u002Fh2>\n\u003Cp>Avant toute chose, la table \u003Ccode>ps_customer\u003C\u002Fcode> doit pouvoir stocker la nouvelle donnée. Exécutez cette requête SQL via phpMyAdmin ou en ligne de commande :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-sql\">\nALTER TABLE `ps_customer`\nADD COLUMN `majeur` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0\nAFTER `newsletter`;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Pour une installation propre, cette requête devrait se trouver dans le fichier \u003Ccode>install.sql\u003C\u002Fcode> de votre module ou dans la méthode \u003Ccode>install()\u003C\u002Fcode> si vous créez un module dédié.\u003C\u002Fp>\n\u003Ch2>Étape 2 : Déclarer le champ dans l'objet Customer\u003C\u002Fh2>\n\u003Cp>PrestaShop utilise son ORM interne (la classe \u003Ccode>ObjectModel\u003C\u002Fcode>) pour mapper les colonnes SQL aux propriétés PHP. Sans cette déclaration, l'objet \u003Ccode>Customer\u003C\u002Fcode> ignorera purement et simplement votre nouveau champ.\u003C\u002Fp>\n\u003Cp>Créez un override de la classe \u003Ccode>Customer\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F override\u002Fclasses\u002FCustomer.php\nclass Customer extends CustomerCore\n{\n    \u002F** @var bool Confirmation de majorité *\u002F\n    public $majeur;\n\n    public function __construct($id = null)\n    {\n        \u002F\u002F Déclarer le champ dans la définition ObjectModel\n        self::$definition['fields']['majeur'] = [\n            'type' =&gt; self::TYPE_BOOL,\n            'validate' =&gt; 'isBool',\n        ];\n        parent::__construct($id);\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Point critique :\u003C\u002Fstrong> sans cette déclaration, même si vous assignez \u003Ccode>$customer->majeur = 1\u003C\u002Fcode> dans le contrôleur, la valeur ne sera jamais persistée en base. L'ORM de PrestaShop ne sauvegarde que les champs déclarés dans \u003Ccode>$definition['fields']\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch2>Étape 3 : Override du contrôleur AuthController\u003C\u002Fh2>\n\u003Cp>C'est ici que la magie opère. Le formulaire d'inscription est traité par la méthode \u003Ccode>processSubmitAccount()\u003C\u002Fcode> du contrôleur \u003Ccode>AuthController\u003C\u002Fcode>. Le flux est le suivant :\u003C\u002Fp>\n\u003Col>\n\u003Cli>`postProcess()` détecte le submit via `Tools::isSubmit('submitAccount')`\u003C\u002Fli>\n\u003Cli>Il appelle `processSubmitAccount()`\u003C\u002Fli>\n\u003Cli>Cette méthode crée l'objet `Customer`, assigne les valeurs et appelle `$customer->add()`\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Voici l'override nécessaire :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F override\u002Fcontrollers\u002Ffront\u002FAuthController.php\nclass AuthController extends AuthControllerCore\n{\n    protected function processSubmitAccount()\n    {\n        \u002F\u002F Récupérer la valeur du champ personnalisé\n        $majeur = (int) Tools::getValue('majeur');\n\n        \u002F\u002F Validation personnalisée AVANT la création du compte\n        if (!$majeur) {\n            $this-&gt;errors[] = $this-&gt;trans(\n                'Vous devez confirmer être majeur pour créer un compte.',\n                [],\n                'Shop.Notifications.Error'\n            );\n            return;\n        }\n\n        \u002F\u002F Appeler le traitement parent\n        parent::processSubmitAccount();\n\n        \u002F\u002F Assigner le champ à l'objet Customer après sa création\n        if ($this-&gt;context-&gt;customer-&gt;id && empty($this-&gt;errors)) {\n            $this-&gt;context-&gt;customer-&gt;majeur = $majeur;\n            $this-&gt;context-&gt;customer-&gt;update();\n        }\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Approche alternative (plus propre) avec un hook\u003C\u002Fh3>\n\u003Cp>Sur PrestaShop 1.7+ et 8.x, vous pouvez utiliser le hook \u003Ccode>actionBeforeSubmitAccount\u003C\u002Fcode> sans override :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F Dans votre module\npublic function hookActionBeforeSubmitAccount($params)\n{\n    $majeur = (int) Tools::getValue('majeur');\n    if (!$majeur) {\n        $controller = Context::getContext()-&gt;controller;\n        $controller-&gt;errors[] = $this-&gt;l(\n            'Vous devez confirmer être majeur pour créer un compte.'\n        );\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Cette approche est préférable car elle évite les overrides qui compliquent les mises à jour.\u003C\u002Fp>\n\u003Ch2>Étape 4 : Modifier le template du formulaire\u003C\u002Fh2>\n\u003Ch3>PrestaShop 1.6 (Smarty)\u003C\u002Fh3>\n\u003Cp>Dans votre thème, éditez \u003Ccode>themes\u002Fvotre-theme\u002Fauthentication.tpl\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-html\">\n&lt;div class=\"form-group\"&gt;\n    &lt;label for=\"majeur\"&gt;\n        &lt;input type=\"checkbox\" name=\"majeur\" id=\"majeur\" value=\"1\"\n               {if isset($smarty.post.majeur) && $smarty.post.majeur}checked{\u002Fif} \u002F&gt;\n        Je certifie être âgé(e) de 18 ans ou plus *\n    &lt;\u002Flabel&gt;\n&lt;\u002Fdiv&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>PrestaShop 8.x (Twig \u002F module de formulaire)\u003C\u002Fh3>\n\u003Cp>Sur PrestaShop 8.x, le système de formulaire client utilise Symfony. La méthode recommandée passe par un module qui étend le \u003Ccode>CustomerFormBuilder\u003C\u002Fcode> :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F src\u002FForm\u002FExtension\u002FCustomerFormExtension.php\nuse PrestaShop\\PrestaShop\\Core\\Form\\FormHandlerInterface;\nuse Symfony\\Component\\Form\\Extension\\Core\\Type\\CheckboxType;\n\nclass CustomerFormExtension\n{\n    public function extend($formBuilder)\n    {\n        $formBuilder-&gt;add('majeur', CheckboxType::class, [\n            'label' =&gt; 'Je certifie être majeur(e)',\n            'required' =&gt; true,\n        ]);\n    }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Étape 5 : Personnaliser le message d'erreur\u003C\u002Fh2>\n\u003Cp>Pour personnaliser les messages d'erreur affichés au client, plusieurs approches :\u003C\u002Fp>\n\u003Ch3>Via les traductions PrestaShop\u003C\u002Fh3>\n\u003Cp>Rendez-vous dans \u003Cstrong>Localisation > Traductions > Modifier les traductions\u003C\u002Fstrong> et sélectionnez le type \"Traductions des messages d'erreur de la boutique\". Recherchez votre message et modifiez-le.\u003C\u002Fp>\n\u003Ch3>Directement dans le code\u003C\u002Fh3>\n\u003Cp>Dans votre override ou module, utilisez le système de traduction :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-php\">\n\u002F\u002F PrestaShop 1.6\n$this-&gt;errors[] = Tools::displayError('Vous devez confirmer être majeur.');\n\n\u002F\u002F PrestaShop 1.7+\n$this-&gt;errors[] = $this-&gt;trans(\n    'Vous devez confirmer être majeur pour créer un compte.',\n    [],\n    'Shop.Notifications.Error'\n);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2>Bonnes pratiques et pièges courants\u003C\u002Fh2>\n\u003Ch3>Erreur n°1 : Le champ n'est pas sauvegardé\u003C\u002Fh3>\n\u003Cp>C'est le piège le plus fréquent. Si vous ajoutez la colonne SQL et récupérez la valeur avec \u003Ccode>Tools::getValue()\u003C\u002Fcode> mais que vous oubliez :\u003C\u002Fp>\n\u003Cul>\n\u003Cli>soit la déclaration dans `$definition['fields']` de l'objet Customer,\u003C\u002Fli>\n\u003Cli>soit l'assignation `$customer->majeur = $majeur` dans le contrôleur,\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>la colonne restera à sa valeur par défaut. \u003Cstrong>Les deux étapes sont indispensables.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>Erreur n°2 : Override non détecté\u003C\u002Fh3>\n\u003Cp>Après avoir créé vos fichiers d'override, n'oubliez pas de vider le cache de PrestaShop. En développement :\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">\n# Supprimer le cache des classes\nrm -rf var\u002Fcache\u002Fprod\u002Fclass_index.php\nrm -rf var\u002Fcache\u002Fdev\u002Fclass_index.php\n\n# Ou en PrestaShop 1.6\nrm -rf cache\u002Fclass_index.php\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch3>Erreur n°3 : Validation côté serveur absente\u003C\u002Fh3>\n\u003Cp>Ne vous fiez jamais à la validation JavaScript seule. Un utilisateur peut désactiver JavaScript ou manipuler la requête HTTP. Validez \u003Cstrong>toujours\u003C\u002Fstrong> côté serveur dans le contrôleur.\u003C\u002Fp>\n\u003Ch2>Récapitulatif technique\u003C\u002Fh2>\n\u003Ctr>\u003Cth>Étape\u003C\u002Fth>\u003Cth>Fichier\u003C\u002Fth>\u003Cth>Action\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>1\u003C\u002Fth>\u003Cth>SQL\u003C\u002Fth>\u003Cth>`ALTER TABLE ps_customer ADD COLUMN majeur`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>2\u003C\u002Fth>\u003Cth>`override\u002Fclasses\u002FCustomer.php`\u003C\u002Fth>\u003Cth>Déclarer le champ dans `$definition`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>3\u003C\u002Fth>\u003Cth>`override\u002Fcontrollers\u002Ffront\u002FAuthController.php`\u003C\u002Fth>\u003Cth>Récupérer, valider et assigner la valeur\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>4\u003C\u002Fth>\u003Cth>Template du thème\u003C\u002Fth>\u003Cth>Ajouter l'input HTML\u003C\u002Fth>\u003C\u002Ftr>\n\u003Ctr>\u003Cth>5\u003C\u002Fth>\u003Cth>Cache\u003C\u002Fth>\u003Cth>Vider `class_index.php`\u003C\u002Fth>\u003C\u002Ftr>\n\u003Cp>En respectant cette séquence, vous obtiendrez un champ personnalisé fonctionnel, validé côté serveur, avec un message d'erreur adapté à votre contexte métier.\u003C\u002Fp>",[40,43,46,49,52,55],{"q":41,"a":42},"Comment ajouter un champ personnalisé au formulaire d'inscription PrestaShop ?","Il faut intervenir sur quatre niveaux : ajouter une colonne dans la table ps_customer, déclarer le champ dans l'objet Customer via un override (propriété + definition fields), traiter la valeur dans un override d'AuthController ou via le hook actionBeforeSubmitAccount, et enfin ajouter le champ HTML dans le template du formulaire. N'oubliez pas de vider le cache après avoir créé les overrides.",{"q":44,"a":45},"Pourquoi mon champ personnalisé ne s'enregistre pas en base de données PrestaShop ?","La cause la plus fréquente est l'oubli de la déclaration dans le tableau $definition['fields'] de la classe Customer. L'ORM de PrestaShop (ObjectModel) ne persiste que les champs explicitement déclarés. Vérifiez également que vous assignez bien la valeur à l'objet ($customer->majeur = $valeur) dans le contrôleur avant l'appel à add() ou update().",{"q":47,"a":48},"Comment personnaliser les messages d'erreur du formulaire de création de compte PrestaShop ?","Vous pouvez modifier les messages d'erreur de deux façons : via le back-office dans Localisation > Traductions pour modifier un message existant, ou directement dans un override du contrôleur AuthController en ajoutant des entrées personnalisées au tableau $this->errors[] avec Tools::displayError() (PS 1.6) ou $this->trans() (PS 1.7+\u002F8.x).",{"q":50,"a":51},"Faut-il utiliser un override ou un module pour ajouter un champ client PrestaShop ?","La meilleure pratique est de créer un module dédié. Les overrides posent des problèmes de maintenance lors des mises à jour et ne peuvent pas être empilés (un seul override par classe). Un module peut utiliser les hooks (actionBeforeSubmitAccount, additionalCustomerFormFields sur PS 1.7+) et encapsuler proprement la logique SQL, la validation et le rendu du formulaire.",{"q":53,"a":54},"Comment ajouter une case à cocher obligatoire dans le formulaire d'inscription PrestaShop 8 ?","Sur PrestaShop 8.x, utilisez le système Symfony de form extensions. Créez un module qui écoute le hook additionalCustomerFormFields pour ajouter un FormField de type checkbox avec la contrainte required. Côté validation, utilisez le hook validateCustomerFormFields pour vérifier la valeur et retourner un message d'erreur personnalisé si la case n'est pas cochée.",{"q":56,"a":57},"L'override d'AuthController ne fonctionne pas, que vérifier ?","Trois vérifications essentielles : 1) Le fichier est bien placé dans override\u002Fcontrollers\u002Ffront\u002FAuthController.php avec la bonne structure de classe (extends AuthControllerCore). 2) Le cache des classes est vidé (supprimez var\u002Fcache\u002Fprod\u002Fclass_index.php). 3) Aucun module n'a déjà créé un override de cette même classe, car PrestaShop ne gère qu'un seul override par fichier.","Pour ajouter un champ personnalisé (comme une case 'majeur') au formulaire d'inscription PrestaShop, il faut modifier la base de données, déclarer le champ dans l'objet Customer, override le contrôleur AuthController pour la validation et le message d'erreur, puis ajouter le HTML dans le template — sur PrestaShop 8.x, privilégiez un module avec les hooks Symfony plutôt qu'un override.",5,"2026-03-21T13:41:20.000Z",[],"PrestaShop pour les développeurs",{"columns":64},[65,81,111,132],{"title":66,"links":67},"Plateforme",[68,72,75,78],{"label":69,"href":70,"external":71},"Offre Starter (2 500 €)","\u002Foffre-starter",false,{"label":73,"href":74,"external":71},"Devenir Ambassadeur","\u002Fambassadeur",{"label":76,"href":77,"external":71},"Modules PrestaShop","\u002Fmodules",{"label":79,"href":80,"external":20},"CodeMyShop.com","https:\u002F\u002Fcodemyshop.com",{"title":82,"links":83},"Le Synedre",[84,87,90,93,96,99,102,105,108],{"label":85,"href":86,"external":71},"L'histoire","\u002Fsynedre",{"label":88,"href":89,"external":71},"Constitution","\u002Fsynedre\u002Fconstitution",{"label":91,"href":92,"external":71},"L'équipe","\u002Fequipe",{"label":94,"href":95,"external":71},"Le réacteur en direct","\u002Freacteur",{"label":97,"href":98,"external":71},"Le Drill (entraînement)","\u002Fdrill",{"label":100,"href":101,"external":71},"Protocole de réunion","\u002Fsynedre\u002Freunion",{"label":103,"href":104,"external":71},"Les agents IA","\u002Fagents-ia",{"label":106,"href":107,"external":71},"La Conduite","\u002Fsynedre\u002Fconduite",{"label":109,"href":110,"external":71},"Charte plateforme","\u002Fsynedre\u002Fcharte",{"title":112,"links":113},"Ressources",[114,117,120,123,126,129],{"label":115,"href":116,"external":71},"Blog","\u002Fblog",{"label":118,"href":119,"external":71},"Academy","\u002Facademy",{"label":121,"href":122,"external":71},"Dictionnaire","\u002Fdictionnaire",{"label":124,"href":125,"external":71},"Expertise PrestaShop","\u002Fexpertise",{"label":127,"href":128,"external":71},"Flywheel","\u002Fflywheel",{"label":130,"href":131,"external":71},"Manifeste","\u002Fmanifeste",{"title":133,"links":134},"À propos",[135,138,141],{"label":136,"href":137,"external":71},"Alexandre Carette","\u002Fa-propos",{"label":139,"href":140,"external":71},"Dossier de presse","\u002Fpresse",{"label":142,"href":143,"external":71},"Contact","\u002Fcontact",{"items":145},[146,155,161,167,175,183,188,194],{"id":147,"type":148,"label":149,"href":125,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":152,"children":153,"psChildren":154},41,"link",{"fr":150},"Expertise",null,0,[],[],{"id":156,"type":148,"label":157,"href":116,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":158,"children":159,"psChildren":160},42,{"fr":115},1,[],[],{"id":162,"type":148,"label":163,"href":77,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":164,"children":165,"psChildren":166},43,{"fr":76},2,[],[],{"id":168,"type":148,"label":169,"href":171,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":172,"children":173,"psChildren":174},44,{"fr":170},"Outils IA","\u002Foutils-ia",3,[],[],{"id":176,"type":148,"label":177,"href":70,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":179,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":180,"children":181,"psChildren":182},45,{"fr":178},"Offre Starter ✨",{"highlight":20},4,[],[],{"id":184,"type":148,"label":185,"href":119,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":59,"children":186,"psChildren":187},46,{"fr":118},[],[],{"id":189,"type":148,"label":190,"href":137,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":191,"children":192,"psChildren":193},47,{"fr":133},6,[],[],{"id":195,"type":148,"label":196,"href":143,"icon":151,"description":151,"badge":151,"groupTitle":151,"style":151,"gridColumns":151,"cssClass":151,"psCategoryId":151,"showPsChildren":71,"position":197,"children":198,"psChildren":199},48,{"fr":142},7,[],[],{"header":201},{"logo":202,"topBar":207,"contactEmail":210,"features":211,"navBar":151},{"src":203,"alt":204,"text":136,"href":205,"class":206},"\u002Flogo-ac.svg","Alexandre Carette — Architecte E-commerce Souverain","\u002F","h-10 w-10",{"message":151,"showLanguages":71,"align":208,"languages":209},"left",[],"contact@alexandrecarette.fr",{"showSearch":71,"showWishlist":71,"showLogin":20,"showContact":71,"showCart":71,"stickyHeader":20,"headerLayout":212},"inline",{"academy":214,"blog":215,"expertise":226},[],[216,220,223],{"title":217,"url":218,"score":158,"type":219},"PrestaShop headless avec Nuxt 3 : pourquoi séparer back et front","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-separation-front-back","blog",{"title":221,"url":222,"score":158,"type":219},"PrestaShop headless : Nuxt 3, pas Next.js — le choix souverain","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fprestashop-headless-nuxt-nextjs-souverainete",{"title":224,"url":225,"score":158,"type":219},"Sylius rachète PrestaShop : ce que ça change pour vous","\u002Fblog\u002Fprestashop\u002Farchitecture\u002Fsylius-rachat-prestashop-headless-souverainete",[],{"footer":228},{"theme":229,"description":151,"hours":151,"logo":230,"contact":231,"social":232,"bottomBar":242},"dark",{"src":203,"href":205,"alt":136},{"email":151,"phone":151,"address":151,"cta":151},[233,236,239],{"platform":234,"href":235,"label":234},"linkedin","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Falexandre-carette\u002F",{"platform":237,"href":238,"label":237},"malt","https:\u002F\u002Fwww.malt.fr\u002Fprofile\u002Falexandrecarette",{"platform":240,"href":241,"label":240},"github","https:\u002F\u002Fgithub.com\u002Fprest4cafe",{"copyright":151}]